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

标签 php regex

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

[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/

相关文章:

php - 简单差异 CSS

php - 正则表达式 - 删除所有非字母数字字符 CRLF 问题

php - 为什么在mysql中不创建表

java - Bigcommerce 在 PHP 中创建订单错误 api

java - 从字符串中删除多余的标点符号,同时保留 "smileys"?

java - 如何在java正则表达式中使用嵌套非捕获组

javascript - 用于使用 javascript 循环提取单独字母的正则表达式

php regex preg_match - 在第一个定界符后停止

php - 路由问题 CodeIgniter

php - 邮件标题显示在邮件正文中,无文件,无 html