<分区>
preg_replace('/http:///ftp:///', 'https://', $value);
$value
中的 http://
和 ftp://
应替换为 https://
此代码给出错误:
preg_replace() [function.preg-replace]: Unknown modifier '/'
这个任务的真正正则表达式是什么?
标签 php regex preg-replace
<分区>
preg_replace('/http:///ftp:///', 'https://', $value);
$value
中的 http://
和 ftp://
应替换为 https://
此代码给出错误:
preg_replace() [function.preg-replace]: Unknown modifier '/'
这个任务的真正正则表达式是什么?
最佳答案
尝试使用不同的分隔符,比如 #
:
preg_replace('#http://|ftp://#', 'https://', $value);
或(不太推荐)转义正则表达式中每次出现的定界符:
preg_replace('/http:\/\/|ftp:\/\//', 'https://', $value);
您还在搜索模式 http:///ftp://
这真的没有多大意义,可能你的意思是http://|ftp://
.
您可以将正则表达式缩短为:
preg_replace('#(?:http|ftp)#', 'https', $value);
了解错误: Unknown modifier '/'
在你的正则表达式中 '/http:///ftp:///'
, 第一个 /
被视为起始分隔符,/
在:
之后被视为结束定界符。现在我们知道我们可以为正则表达式提供修饰符来改变它的默认行为。一些这样的修饰符是:
i
: 制作匹配案例
不敏感m
: 多行搜索但是 PHP 在结束分隔符之后看到的是另一个 /
并尝试将其解释为修饰符但失败,导致错误。
preg_replace
返回更改后的字符串。
$value = 'http://foo.com';
$value = preg_replace('#http://|ftp://#', 'https://', $value);
// $value is now https://foo.com
关于php - PHP 中的未知修饰符 '/' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3719915/