首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >preg_replace() [function.preg-replace]:未知修饰符'?‘

preg_replace() [function.preg-replace]:未知修饰符'?‘
EN

Stack Overflow用户
提问于 2012-09-19 17:23:11
回答 3查看 1.4K关注 0票数 1

下面的代码给我一个错误"preg_replace()函数.preg-replace:未知修饰符'?'“

代码语言:javascript
复制
$str = 'background: url("../../dsdgsd/contain.jpg");';

echo preg_replace('/url\s?\(\s?(\"|\')([../?]*[a-z/]*?[/?]?)([a-z0-9_-]*[.][jpg|jpeg|png|jpeg]*)([\'|\"]\))/gi','url("../images/$3")',$str);
EN

回答 3

Stack Overflow用户

发布于 2012-09-19 17:27:53

我不确定这个正则表达式应该做什么,但是给出这个错误是因为模式中有/字符。然后,解析器认为您的模式已经完成,并将其后面的所有内容(在本例中为? )作为修饰符。因此出现了错误。

通过使用另一个分隔符进行修复:(大多数人在处理大量/时使用# )

代码语言:javascript
复制
echo preg_replace('#url\s?\(\s?(\"|\')([../?]*[a-z/]*?[/?]?)([a-z0-9_-]*[.][jpg|jpeg|png|jpeg]*)([\'|\"]\))#i','url("../images/$3")',$str);

(除此之外,如前所述,不需要g修饰符)

票数 2
EN

Stack Overflow用户

发布于 2012-09-19 17:25:13

对于preg_replace,没有必要使用global修改器g (不应该使用),它已经全局替换。

There is no g modifier in php.

票数 1
EN

Stack Overflow用户

发布于 2012-09-19 17:28:23

由于正则表达式以/字符开头,因此它是一个分隔符,应该对正则表达式中出现的所有/进行转义。因为第二个/后面的第一个字符是?,所以它被解释为修饰符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12491853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档