Php preg替换https-won';行不通

Php preg替换https-won';行不通,php,preg-replace,Php,Preg Replace,我想删除http://&https:// preg_replace(array('/(?i)\b((^https?:////\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,&l

我想删除http://&
https://

preg_replace(array('/(?i)\b((^https?:////\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))/', '/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '/(^|[^a-z0-9_])#(\w+)/u')
我添加此内联:
^https?://

preg_replace(array('/(?i)\b((^https?:////\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))/', '/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '/(^|[^a-z0-9_])#(\w+)/u')
[代码>preg>preg>preg>preg+替换(数组)替换(数组(“/,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,","",""",""",""",""",""",""我","""","
尝试并失败,语法错误?

如果您只想删除
http://
https://
(这是您的问题),这将完成以下操作:

$str = preg_replace('/(https?:\/\/)/', '', 'http://example.com');
如果您只想在字符串以以下任一协议开头时删除它们:

$str = preg_replace('/^(https?:\/\/)/', '', 'http://example.com');

初始分隔符后面的
^
表示“字符串的开始”。

耶警告:preg_replace():未知修饰符“/”请提供。另外,当您想编写
\/\/
时,您有
////
。您不应该添加
^https?:/
,而是
https?:\/\/
为什么不直接使用
$string=stru替换(“http://”,“,$string”);
$string=stru替换(“https://”,“,$string”);
?更简单、更容易阅读。如果可以在一个语句中完成,为什么要使用两个语句?以及使用
preg_replace()
,您可以断言,只有当替换以这些协议中的任何一个协议开始时,才应该进行替换,而不是全部替换。这实际上是一个很好的观点。我正在考虑一个文本字符串,它可能包含一个链接。在这种情况下,开始修饰符将不起作用。但我想这不会有太大的区别。我通常同意您的看法应该尽可能保持简单(KISS ftw),并且正则表达式通常会使它变得比必要的更复杂,但在这种情况下,正则表达式足够简单,可以阅读。是的。同意。你可以用任何一种方法来做。;-)虽然此代码片段可能会解决此问题,但它不会解释为什么或如何回答此问题。请注意,这确实有助于提高您文章的质量。请记住,您将在将来为读者回答此问题,而这些人可能不知道您提出代码建议的原因。标记者/审阅者: