Помогите с регуляркой

12
Пуховой
На сайте с 17.11.2007
Offline
154
860

Товарищи, всем привет :)

Помогите пожалуйста сделать регулярное выражение, для удаления из голого текста ссылок вида:

http://www.site.com

http://site.com

Заранее спасибо :)

[Удален]
#1

Если как обычные ссылки

$file = preg_replace('/<a[^>]*?>/si','&nbsp;',$file);
$file = preg_replace('/http://[^site.com]*?>/si','&nbsp;',$file);
$file = preg_replace('/http://[^>]*?site.com/si','&nbsp;',$file);

чёто типа этого

KosoyRoman добавил 27.09.2008 в 19:22

а можно просто


$arr = array('http://site.com','http://www.site.com')
$file = ereg_replace($arr,"",$file);
Пуховой
На сайте с 17.11.2007
Offline
154
#2

Unknown modifier '/'

Возможно немного неправильно выразил я мысль :)

Нужно ссылки удалить, они могут быть как http://www.site.com, так и http://eklmn.su, скажем. После каждой такой ссылки в тексте идет пробел, вот надо как то вырезать то, что начинается с http:// и кончается пробелом :)

[Удален]
#3
<?
$text = "fdsfasdfa sadfasdf sadfasdf http://www.news45.ru erwef sadf asdfasd";
$file = preg_replace('/http[^>]*? /si','',$text);
echo $file;
?>

пожалуйста

KosoyRoman добавил 27.09.2008 в 19:43

всё работает на ура )))

[Удален]
#4
KosoyRoman:
пожалуйста

KosoyRoman добавил 27.09.2008 в 19:43
всё работает на ура )))

вы сами то в это верите ?

пуховой дайти исходный текст, не темните = получите регулярку.

[Удален]
#5

bearman

Там написал как пример.

Это:

$file = preg_replace('/http[^>]*? /si','',$text);

Нужно было ТС.

LA
На сайте с 03.06.2008
Offline
105
#6

KosoyRoman, что-то вы тут фигню пропогандируйте))

KosoyRoman:
$file = preg_replace('/http://[^site.com]*?>/si','&nbsp;',$file);

Тут скажет, что модификатор начала регулярки не найден или не установлен. Это из-за того, что вы слэш ткнули у http, лучше использовать модификатор начала не слэш, а что-то другое.

KosoyRoman:
$file = preg_replace('/http[^>]*? /si','',$text);

Удалить ссылки, с началом http и концом ">"? Ага, а где ">" в тексте? ТС же сказал, что ссылки без тега <a>.

При условии, что все урлы в urlencode() формате (без пробелов) и пробел после урла.


$new_text = preg_replace('#(http|ftp)://[^/]+[^\s]*#iU', '', $text);
[Удален]
#7

$new_text = preg_replace('#(http|https|ftp)://[^\s]+?\s#i', '', $text);

я бы так поступил)

Malcolm
На сайте с 02.05.2007
Offline
119
#8

$text = preg_replace('~http:[^\s]*~i', '', $text);
:)
[Удален]
#9
Malcolm:
$text = preg_replace('~http:[^\s]*~i', '', $text);
:)

может сожрать полезный текст, + не съест хттпс ;)

rasiell
На сайте с 16.02.2008
Offline
180
#10

Если определять именно по пробелу, то я бы вот так сделал:

'%(http|https)://.*?\s%'

Еще можно зацепиться за зоны:

'%(http|https)://.*?(ru|su|com|ua|net|org)%'

P.S. Есть неплохая программа для создания и теста регулярок - RegexBuddy

Zerber (http://spartanets.ru/zerber) — программа для публикации статей в различные CMS и блогсервисы
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий