preg_replace, чтобы удалить все слова, начинающиеся с http: // и заканчивающиеся пробелом - PullRequest
2 голосов
/ 12 января 2010

У меня появилась идея удалить все ссылки из строки с помощью PHP.

Мне нужен preg_replace, чтобы удалить и удалить все слова, начинающиеся с:

http: // или https: // или www. или www3. или ftp: //

и заканчивается пробелом.

пример: привет http://dsqdsq.com/fdsfsd?fsdflsd наслаждайтесь!

это будет: привет, наслаждайтесь!

Спасибо

Ответы [ 5 ]

3 голосов
/ 12 января 2010

Я бы сделал это так:

$output = preg_replace('!\b((https?|ftp)://)?www3?\..*?\b!', '', $input);

, который:

  • Начинается с границы слова (\b);
  • При желании начинается с http://, https: // или ftp: //; и
  • Доменное имя начинается с www. или www3.

Этот текст и весь текст до следующей границы слова затем удаляются.

Примечание: Использование \b обычно лучше проверки пробелов. \b - это нулевая ширина (то есть она не потребляет части ввода), которая соответствует началу строки, концу строки, переходу от слова к несловесному символу или переходу от не-слова слово в слово.

2 голосов
/ 12 января 2010
$string = 'hello http://dsqdsq.com/fdsfsd?fsdflsd enjoy !';
$stripped_string = preg_replace('; ((ftp|https?)://|www3?\.).+? ;', ' ', $string);

Обновление : здесь с \ b вместо пробелов, которые будут работать лучше. Большое спасибо Cletus!

$string = 'hello http://dsqdsq.com/fdsfsd?fsdflsd enjoy !';
$stripped_string = preg_replace(';\b((ftp|https?)://|www3?\.).+?\b;', ' ', $string);
0 голосов
/ 05 декабря 2013

Решение от Cletus не работает должным образом, потому что. (точка) также является границей слова, поэтому мы должны использовать маркер пробела \ s вместо слова bouadry в конце:

$output = preg_replace('!\b((https?|ftp)://)?www3?\..*?\s!', '', $input);
0 голосов
/ 12 января 2010

хм .. попробуйте

$pattern=array(
        '`((?:https?|ftp)://\S+[[:alnum:]]/?)`si',
        '`((?<!//)(www\.\S+[[:alnum:]]/?))`si'
        );
$output = "http://$1";
$input = // set some url here;
preg_replace($pattern,$output,$input);
0 голосов
/ 12 января 2010

как то так? просто с макушки головы без проверки

/(http:\/\/(.*?)\s)/i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...