用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秒:)