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

Вопрос:У меня есть много строк (твиттер-твитов), из которых я хотел бы удалить ссылки, когда я их эхо. У меня нет контроля над строкой, и хотя все ссылки начинаются с http, они могут заканчиваться символом "/" или ";" нет, и им следует следовать или нет. Кроме того, иногда между связующим звеном и словом перед ним нет

Вопрос:

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

У меня нет контроля над строкой, и хотя все ссылки начинаются с 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); Ответ №1

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

$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);

Оцените статью
Добавить комментарий