用PHP(正则表达式)解析内容占位符

用PHP(正则表达式)解析内容占位符,php,regex,Php,Regex,我有一些内容占位符出现在我的内容中,并且始终采用以下格式: [page_x] 其中x是一个整数 我想做的是获取与该模式匹配的所有占位符,这样我就可以遍历它们 我在regex是一个真正的新手(尝试学习),所以我现在所拥有的是: preg_match_all("/[page_(*)]/", $content, $matches) 这显然是错误的,因为它不起作用-例如,包含[page_1]的$content为$matches提供了一个空数组 任何帮助或指示都将不胜感激。方括号在正则表达式中具有特

我有一些内容占位符出现在我的内容中,并且始终采用以下格式:

[page_x] 
其中x是一个整数

我想做的是获取与该模式匹配的所有占位符,这样我就可以遍历它们

我在regex是一个真正的新手(尝试学习),所以我现在所拥有的是:

preg_match_all("/[page_(*)]/", $content, $matches)
这显然是错误的,因为它不起作用-例如,包含[page_1]的$content为$matches提供了一个空数组


任何帮助或指示都将不胜感激。

方括号在正则表达式中具有特殊意义。你需要逃避它。另外,
*
本身也是毫无意义的

它是一个修饰符,意思是前面的字符
零个或多个
,所以你需要一个前面的字符,我在这里添加了一个
,可以匹配任何字符

最后,为了防止过度匹配,您需要添加
,使组匹配为非贪婪

preg_match_all('/\[page_(.*?)\]/', $content, $matches)
如果您总是要匹配数字(即第1页、第2页、第3页),则最好使用正则表达式

preg_match_all("/\[page_(\d+)\]/", $content, $matches)

\d+
表示1个或多个数字

*表示重复0次或更多次,但您没有指定重复的内容。将其更改为([0-9]+),这意味着数字介于0和9之间,重复1次或多次引用:感谢您的引用。我真的需要理解regex,因为我确信它打开了一个全新的世界。这完美地解决了这个问题。非常感谢你。我选择了后者,因为我想强制匹配整数。我必须再等30秒:)