php: удалить URL из строки

У меня много строк (твиттер-твиты), из которых я хотел бы удалить ссылки, когда я их эхо.

Я не контролирую строку, и хотя все ссылки начинаются с http, они могут заканчиваться символом «/» или «;», нет, и им следует следовать или нет. Кроме того, иногда между связующим звеном и словом перед ним нет места.

Один пример такой строки:

The Third Culture: The Frontline of Global Thinkinghttp://is.gd/qFioda;via @edge 

Я пытаюсь поиграть с preg_replace, но не смог найти решение, соответствующее всем исключениям:

 <?php echo preg_replace("/\http[^)]+\;/","",$feed->itemTitle); ?> 

Любая идея, как я должен действовать?

Редактировать: Я пробовал

 <?php echo preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)‌​?)@', ' ', $feed->itemTitle); ?> 

но до сих пор нет успеха.

Изменить 2: я нашел это:

 <?php echo preg_replace('^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-‌​\.\?\,\'\/\\\+&amp;%\$#_]*)?$^',' ', $feed->itemTitle); ?> 

которые удаляют ссылку, как ожидалось, но также удаляет всю строку, когда между ссылкой и предшествующим ей словом нет пробела.

Если вы хотите удалить все, ссылку и после ссылки, например, через предмет в вашем примере, ниже может помочь вам:

 $string = "The Third Culture: The Frontline of Global Thinkinghttp://is.gd/qFioda;via @edge"; $regex = "@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?).*$)@"; echo preg_replace($regex, ' ', $string); 

Если вы хотите сохранить их:

 $string = "The Third Culture: The Frontline of Global Thinkinghttp://is.gd/qFioda;via @edge"; $regex = "@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@"; echo preg_replace($regex, ' ', $string); 

Я бы сделал что-то вроде этого:

 $input = "The Third Culture: The Frontline of Global Thinkinghttp://is.gd/qFioda;via @edge"; $replace = '"(https?://.*)(?=;)"'; $output = preg_replace($replace, '', $input); print_r($output); 

Он также работает для нескольких случаев:

 $output = preg_replace($replace, '', $input."\n".$input); print_r($output);