如何用 PHP 制作文本旋转器
我正在尝试为此类文本创建一个解析器:
{{texta1|texta2|texta3} {texta11|texta22}|{textb1|textb2} {textb11|textb22}}
我设法让这个正则表达式 ~(?<={).*?(?=})~U
工作以匹配主要内容在第一个 { 和最后一个 } 内,但是当我想用爆炸分割 {a|b|c}|{aa|bb|cc} 时,我遇到了问题,因为它不会将每个 {} 分割成一个单独的数组,但会分割每个|,如果我使用 }|{ 拆分它,则输出会有点损坏,尝试解析它以供以后旋转,因为输出中将缺少 } 和 {。
有人有一种方法可以使用正则表达式或类似的方法来做到这一点,而不需要大量的代码吗?
I am trying to create a parser for this kind of texts:
{{texta1|texta2|texta3} {texta11|texta22}|{textb1|textb2} {textb11|textb22}}
I managed to get this regex ~(?<={).*?(?=})~U
working to match the main content inside the first { and last }, but when I want to split {a|b|c}|{aa|bb|cc} with explode I am having problems since it wont split each {} into a separated array but will split every |, and if I split it using }|{, the output then gets kinda broken to try to parse it for later spinning cause a } and { will be missing on the output.
Does someone has a method to do this with regex or something like that that doesn't require tons of code?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正则表达式不是为构建解析器而设计的。该网站上有一百万个帖子说明了原因。像这样的东西可能更适合http://php.net/manual/en/function。 strtok.php
regex is not made for building parsers. there are a million posts on this site showing why. something like this is maybe more suited http://php.net/manual/en/function.strtok.php