preg替换https将无法正常工作

时间:2016-11-04 13:21:33

标签: php preg-replace

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

我将此内联添加:^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')

尝试失败,语法错误?

2 个答案:

答案 0 :(得分:0)

如果您只想删除http://https://(这是您的问题),这样就可以了:

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

如果您只想在字符串以这些协议中的任何一个开头时删除它们:

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

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

答案 1 :(得分:0)

function remove_http($url) {
 $disallowed = array('http://', 'https://');
 foreach($disallowed as $d) {
   if(strpos($url, $d) === 0) {
      return str_replace($d, '', $url);
   }
 }
 return $url;
}