preg_match 仅返回相同元素一次
我正在遍历一个字符串并处理 !-- 和 --! 之间的所有元素。但只有独特的元素才是过程。当我有!--例子--!在文本中还有一点!--example--!,第二个被忽略。
这是代码:
while ($do = preg_match("/!--(.*?)--!/", $formtext, $matches)){
我知道 preg_match_all,但需要使用 preg_match 来完成此操作。
有什么帮助吗?提前致谢!
I am going through a string and proces all the elements between !-- and --!. But only unique elements are processes. When I have !--example--! and a bit further in the text also !--example--!, the second one is ignored.
This is the code:
while ($do = preg_match("/!--(.*?)--!/", $formtext, $matches)){
I know about preg_match_all, but need to do this with preg_match.
Any help? Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您将希望 PHP 仅在上一个匹配之后查找匹配。为此,您需要使用 PREG_OFFSET_CAPTURE 标志捕获字符串偏移量。
示例:
有关详细信息,请参阅 preg_match 文档。
You'll want PHP to look for matches only after the previous match. For that, you'll need to capture string offsets using the PREG_OFFSET_CAPTURE flag.
Example:
See the preg_match documentation for more info.
使用
preg_match_all
编辑:一些澄清:
Use
preg_match_all
edit: some clarification yields:
while ($do = preg_match("/[!--(.*?)--!]*/", $formtext, $matches)){
指定模式末尾的 *指定多个。它们都应该添加到您的 $matches 数组中。
while ($do = preg_match("/[!--(.*?)--!]*/", $formtext, $matches)){
Specify the * at the end of the pattern to specify more than one. They should both get added to your $matches array.