Jam*_*mes 3 php regex preg-replace
preg_replace('/http:///ftp:///', 'https://', $value);
Run Code Online (Sandbox Code Playgroud)
http://和ftp://内$value应改为https://
此代码提供错误:
preg_replace() [function.preg-replace]: Unknown modifier '/'
Run Code Online (Sandbox Code Playgroud)
这项任务的真正正则表达式是什么?
尝试使用不同的分隔符,例如#:
preg_replace('#http://|ftp://#', 'https://', $value);
Run Code Online (Sandbox Code Playgroud)
或者(少推荐)转义正则表达式中每个分隔符的出现:
preg_replace('/http:\/\/|ftp:\/\//', 'https://', $value);
Run Code Online (Sandbox Code Playgroud)
此外,你正在寻找http:///ftp://真正没有多大意义的模式,可能是你的意思http://|ftp://.
您可以将正则表达式缩短为:
preg_replace('#(?:http|ftp)#', 'https', $value);
Run Code Online (Sandbox Code Playgroud)
理解错误: 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
Run Code Online (Sandbox Code Playgroud)