我的内容中出现了一些内容占位符,并且始终采用以下格式:
[page_x]
其中 x 是整数。
我想做的是获取与该模式匹配的所有占位符,以便我可以迭代它们。
我是正则表达式的真正新手(正在尝试学习),所以我现在所拥有的是:
preg_match_all("/[page_(*)]/", $content, $matches)
这显然是错误的,因为它不起作用 - 例如包含 [page_1] 的 $content 为我提供了 $matches 的空数组。
任何帮助或指示将不胜感激。
最佳答案
方括号在正则表达式中具有特殊含义。你需要逃避它。而且 *
本身是没有意义的。
它是一个修饰符,意味着零个或多个前面的字符
,因此您需要一个前面的字符,我在这里添加了一个.
,它将匹配任何内容
最后,为了防止过度匹配,您需要添加 ?
以使组匹配非贪婪
preg_match_all('/\[page_(.*?)\]/', $content, $matches)
如果您总是要匹配数字(即 page_1、page_2、page_3),则更好的正则表达式会是
preg_match_all("/\[page_(\d+)\]/", $content, $matches)
\d+
表示 1 个或多个数字
关于php - 使用 PHP(正则表达式)解析内容占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16458025/