Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Модификация регулярки
Форумы портала PHP.SU » PHP » Регулярные выражения » Модификация регулярки

Страниц (1): [1]
 

1. xsh - 14 Августа, 2011 - 16:27:36 - перейти к сообщению
Помогите модифицировать данную регулярку
/(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/
чтобы она описывала не только домены, но и любые символы что стоят после домена на этой строке через / кроме пробела, т.е. по сути любые урл. Спасибо.
2. illy - 14 Августа, 2011 - 17:34:14 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $text="http://dggfdg.ru ftp://tytytghjhj";
  3. preg_match_all('#(https?|ftp)://.*( |$)#mUsi',$text,$v);
  4. for($c=0;$c!=sizeof($v[0]);$c++){
  5. echo $v[0][$c].'<br>';
  6. }
  7. ?>
3. xsh - 14 Августа, 2011 - 17:40:25 - перейти к сообщению
illy в твоей регулярке урл ищутся по протоколу по сути, это немного не тот вариант, поскольку у меня исходные url без указания http. так что туда могут попасть и просто слова с латинскими буквами. хотелось бы все же применять ту регулярку
(Добавление)
illy если дописать к той регулярке mUsi она будет забирать всю строку?
4. illy - 14 Августа, 2011 - 18:24:05 - перейти к сообщению
xsh пишет:
если дописать к той регулярке mUsi она будет забирать всю строку?

угу и в случае, если кодировка utf
5. xsh - 14 Августа, 2011 - 18:35:53 - перейти к сообщению
illy поясни пожалуйста что означает mUsi, я где то встречал уже Usi но не помню что означает.
'/(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/mUsi'
так верно?
6. illy - 14 Августа, 2011 - 19:06:12 - перейти к сообщению
U - это на случай если текст в кодировке utf
i - Не различать строчные и прописные буквы.
m - Многострочный поиск.
s - По умолчанию метасимвол '.' не включает в свое определение символ перевода строки. Т.е. для многострочного текста выражение /.+/ вернет только первую строку, а не весь текст, как ожидается. Указание этого модификатора снимает это ограничение.
7. xsh - 14 Августа, 2011 - 20:00:46 - перейти к сообщению
illy где то я ошибся '/(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/mUsi' не работает, как сделать чтобы по этой /(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/ регулярке брался не только домен, а вся ссылка, если учесть что все ссылки по одной на строке.
если брать '/(([a-z0-9\-\.]+)?[a-z0-9\-]+(!?\.[a-z]{2,4}))/mUsi' то он берет часть url типа "/connect.html" и делает из него домен типа connect.ht не учитывая слеши и то что по 1 урл на строку..
8. Alek - 15 Августа, 2011 - 02:08:53 - перейти к сообщению
xsh
PHP:
скопировать код в буфер обмена
  1.  
  2. $site="http://www.site.ru/dindex.php?t=647436";
  3. $site = preg_replace("#(^(http://www\.)?([a-z0-9]+\.[a-z]{2,4})\/?((?![=-])[a-z-0-9-_.?=]+)+?)#i", '<A target=_blank href="$1">$0</A>', $site);
  4. print "Вывод ссылки:$site<br />";

 

Powered by ExBB FM 1.0 RC1