尝试使用不同的分隔符,例如#:
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:///' 中,第一个/ 被视为起始分隔符,: 之后的/ 被视为结束分隔符。现在我们知道我们可以为正则表达式提供修饰符来改变其默认行为。一些这样的修饰符是:
但是 PHP 在结束分隔符之后看到的是另一个 / 并试图将其解释为修饰符但失败,从而导致错误。
preg_replace 返回更改后的字符串。
$value = 'http://foo.com';
$value = preg_replace('#http://|ftp://#', 'https://', $value);
// $value is now https://foo.com