|
|
|
| Вообщем то понимаю как это примерно делается, но что-то коряво получается. Проблема банальная, есть форма, туда юзеры любят постить ссылки, хоть теги вырезаются, но все равное ввиде текста она болтается.
Скажите как из переменной автоматом вырезать ссылки, скажем автоматом проверять наличие в тексте http:// или www. или и то и то. Вообщем прошу подсказать кто сталкивался с этой проблемой, заранее благодарен. | |
|
|
|
|
|
|
|
для: shog
(31.08.2008 в 20:15)
| | Можно использовать функцию str_replace() | |
|
|
|
|
|
|
|
для: shog
(31.08.2008 в 20:15)
| | Можно попробовать так
preg_replace("![http://|www][^\s]+\s!","",$text);
|
P.S. А так лучше поподробнее, что остается? | |
|
|
|
|
автор: xx7 (31.08.2008 в 21:52) |
|
|
для: AcidTrash
(31.08.2008 в 21:21)
| | Конструкция [http://|www] будет понята как класс означаюший любой из этих символов ,)
наверное Вы имели ввиду что.то типа '!\b(http://|www)\S*!i' | |
|
|
|
|
|
|
|
для: xx7
(31.08.2008 в 21:52)
| | Вот к примеру существует в записи
www.site.ru
и http://site2.ru
Нужно что бы после обработки переменной не было не www.site.ru, а также http://site2.ru
К примеру чтобы вместо этого был пробел. | |
|
|
|
|
|
|
|
для: shog
(31.08.2008 в 22:47)
| | может быть так :
<?php
$str = "большая коллекция гадости на http://www.гадость.com заходите не пожалеете";
$arr = explode(" ", $str);
foreach($arr as $val)
{
if(strpos($val, 'http:') !== false || strpos($val, 'www.') !== false) $val = ' ';
$new_str .= $val." ";
}
echo $new_str;
?>
|
| |
|
|
|
|
|
|
|
для: shog
(31.08.2008 в 22:47)
| | или попробуйте так
<?php
$str = "большая коллекция гадости на http://www.гадость.com заходите не пожалеете";
echo $new_str = preg_replace('#(?:http://|www)\S*#i', '', $str);
# не пробовал ,)
?>
|
PS// в том своём посте незаметил что сделал ограничители "|"
, тогда как выражение содержало спецсимвол "|" который был-бы воспринят как закрывающий ограничитель
( так бывает )) | |
|
|
|