PHPCMS中正则用于URL重写、字段过滤、内容采集等,通过preg_match、preg_replace实现;如提取首张图片可用$pattern='/

在 PHPCMS 中,正则表达式主要用于内容提取、URL 规则匹配、字段过滤和数据替换等场景。掌握基本的正则语法和 PHPCMS 的调用方式,能有效提升开发效率。
一、PHPCMS 中正则的常见用途
PHPCMS 在以下地方会用到正则:
- URL 重写(URL规则):后台“扩展”→“URL规则”中设置伪静态时,使用正则定义路径匹配模式。
- 模型字段处理:如文本字段过滤、内容提取时通过 preg_match 或 preg_replace 处理数据。
- 采集模块:在“内容发布规则”或“列表页信息”中,使用正则提取网页中的标题、内容等。
- 模板中 PHP 代码:在模板里嵌入 PHP 时,可手动调用 preg_* 函数做字符串处理。
二、正则基础语法在 PHPCMS 中的应用
PHPCMS 使用的是 PHP 的 preg_* 系列函数,所以正则语法遵循 PCRE 标准。
常用符号示例:
立即学习“PHP免费学习笔记(深入)”;
- . 匹配任意单个字符(除换行符)
- \d 匹配数字
- \s 匹配空白字符
- * 前一个字符0次或多次
- + 前一个字符1次或多次
- ? 前一个字符0次或1次
- ^ 匹配开头
- $ 匹配结尾
- [] 字符集合,如 [abc]
- () 分组捕获
注意:正则需用分隔符包围,如 /pattern/ 或 #pattern#,避免与斜杠冲突时可用 #
三、正则匹配与替换实例
以下是实际开发中常见的操作示例:
1. 提取内容中的图片地址
想从文章内容中提取第一张图:
$pattern = '/
preg_match($pattern, $content, $matches);
if (!empty($matches[1])) {
$first_image = $matches[1];
}
2. 替换内容中的特定关键词
比如将“PHP”替换为“PHP”加粗显示:
$content = preg_replace('/(PHP)/i', '$1', $content);
3. URL规则中的正则占位符
在后台设置 URL 规则时,例如:
/article/{y}/{m}{d}/{id}.html
系统会自动转换成正则:
#^/article/(\d{4})/(\d{2})(\d{2})/(\d+)\.html$#
然后映射到对应参数:{y} → 年,{id} → 内容ID
四、注意事项与技巧
使用正则时要注意以下几点:
- 尽量使用非贪婪模式(加 ?),如 .*?,避免匹配过长内容。
- 注意转义特殊字符,如 . * + ? ( ) { } | \ 等,在正则中要用 \ 转义。
- 多行匹配时加上 m 修饰符,忽略换行影响用 s 修饰符(让 . 匹配换行)。
- 在采集规则中测试正则时,可在后台“测试”功能中预览结果。
- 避免在模板中写复杂正则,建议在控制器或函数中处理后再传值。
基本上就这些。PHPCMS 的正则能力依赖 PHP 本身,只要熟悉 preg_match、preg_replace 这两个函数,结合后台配置,就能灵活应对各种匹配和替换需求。











