Уберите все URL из смешанной строки (php) - PullRequest
0 голосов
/ 12 января 2010

Я сохранил этот вопрос, потому что не нашел хорошего ответа.

У меня есть строка, которая может содержать текст с URL.

Я хочу, чтобы функция удаляла все URL из этой строки и просто позволяла тексту.

в качестве примера строка может содержать так:

1) эй, посмотри сюда: http://xxx.xxx/545df5 это здорово!

2) эй, посмотри сюда: http://www.xxx.xxx/545df5 это здорово!

3) эй, посмотрите здесь: xxx.xxx/545df5 это здорово!

4) эй, посмотрите здесь: www.xxx.xxx/545df5 это здорово!

Спасибо

Ответы [ 4 ]

0 голосов
/ 17 июля 2012

Эта функция должна делать это (при условии, что ваши строки разделены пробелом ""):

function isValidURL($url) {
    return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
}

function cleanUpUrls($urls) {
    $urlArray = explode(' ',$urls);
    $resultArray = array();
    foreach ($urlArray as $url) {
        if(!isValidURL($url)) {
            $resultArray[] = $url;
        }
    }
    return implode(' ',$resultArray);
}
0 голосов
/ 12 января 2010

Что вам действительно нужно, так это твердое регулярное выражение для поиска URL-адресов в строке, и вы можете preg_replace этого шаблона ни с чем. Я могу вам сказать, что отыскать такое регулярное выражение нелегко. В зависимости от вариаций в URL, которые вы ищете (например, http: // vs https: // vs ftp: //) Вы можете столкнуться с реальными проблемами, пытаясь объяснить все это.

Вот страница, которую я нашел хорошим началом, хотя .

0 голосов
/ 14 января 2010

Regex - это путь, который обсуждался ранее. Найти его не так уж сложно (google: шаблон регулярного выражения URL). Один из приведенных примеров приведен здесь

http://www.geekzilla.co.uk/View2D3B0109-C1B2-4B4E-BFFD-E8088CBC85FD.htm

Я бы также порекомендовал вам проверить свое регулярное выражение, используя один из множества хороших онлайн-тестеров регулярных выражений. Мой любимый (для не Java) это

http://www.regextester.com/

0 голосов
/ 12 января 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...