php – 为什么preg_replace会抛出“未知修饰符”错误?

参见英文答案 > Warning: preg_replace(): Unknown modifier ‘]’                                    3个
我一直收到这个错误:

Warning: preg_match()
[function.preg-match]: Unknown
modifier ‘t’ in
D:\xampp\htdocs\administrator\components\com_smms\functions\plugin.php
on line 235

上:

$PageContent = preg_replace($result->module_pregmatch, '', $PageContent);

我在$result-> module_pregmatch上做了一个var_dump,我得到以下结果:

string '/<title>(.*)</title>/Ui' (length=23)

string '/<meta[^>]*name=["|\']description["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=77)

string '/<meta[^>]*name=["|\']keywords["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=74)

string '/<meta[^>]*name=["|\']author["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=72)

string '/<meta[^>]*name=["|\']copyright["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=75)

string '/<meta[^>]*name=["|\']robots["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=72)

string '/<meta[^>]*http=equiv=["|\']content-language["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=88)
string '/<meta[^>]*http-equiv=["|\']content-type["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=84)

string '/<link[^>]*href=["|\'](.*)["|\'][^>]*rel=["|\']shortcut[^>]*icon["|\'][^>]*type=["|\']image\/x-icon["|\']\s*\/>/Ui' (length=114)

string '/<link[^>]*href=["|\'](.*)["|\'][^>]*rel=["|\']alternate["|\'][^>]*type=["|\']application\/rss\+xml["|\'][^>]*title=["|\'](.*)["|\'][^>]\/>/Ui' (length=142)

string '/<link[^>]*href=["|\'](.*)["|\'][^>]*rel=["|\']alternate["|\'][^>]*type=["|\']application\/atom\+xml["|\'][^>]*title=["|\'](.*)["|\'][^>]\/>/Ui' (length=143)

有人可以告诉我我做错了什么吗?我一直坚持这个错误太久了…

解决方法:

您使用正斜杠作为正则表达式模式分隔符,因此/\u0026lt;title\u0026gt;(.*)\u0026lt;/title\u0026gt;/Ui’将不起作用(< / title>具有正斜杠).

例如,您应该能够转义正斜杠或使用不包含在模式中的其他分隔符

'/<title>(.*)<\/title>/Ui' //(esacaping)

要么

'~<title>(.*)</title>~Ui' //different delimiter
上一篇:VACUUM - 垃圾收集以及可选地分析一个数据库


下一篇:微服务架构 | 7.1 基于 OAuth2 的安全认证