Немогу додумать, как из строки текста выдернуть корректно написанную ссылку. Не получается одно - если после ссылки есть текст, во всех остальных случаях работает. Подскажите, как дописать проверку.
Заранее благодарю!
$str = array(
"efsfsd",
"sf87sdfg",
"d fg gfgf www.site.ru g fg gf h", //НЕ ПРОХОДИТ
"sfdfsg.dsg.sdfg",
"www.",
"http://site.ru",
"http://",
"sdfsdf.www.dsf",
"ftp://ftp.si_te.ru",
"dfgdfg.ftp.fdg",
"www.sdfsdf",
"dsgs g http://www.site.ru", //ПРОХОДИТ
"http://www.site.ru r fg gf", //НЕ ПРОХОДИТ
"fd dfhg ftp://",
"ftp.",
"ftp.site.ru",
"https://",
"https://si-te.ru",
"https://site.net",
"https://site-net.net.ne-t",
"https://site.",
"asdf.https://site.ru"
);
foreach($str as $val) {
if(preg_match("/(?:^|[\n\s])((?:www\.)|(?:(ht|f)tp(s)?)(?:(\.|:\/\/)))+[-_а-яА-Яa-zA-Z0-9]*(?:\.[а-яА-Яa-zA-Z]+)[^\s]$/is",$val)) {
echo $val." - ПРАВИЛЬНАЯ ссылка!</br>";
}
else {
echo $val." - неправильная ссылка!</br>";
}
}
Спустя 18 минут, 39 секунд (2.07.2012 - 17:39) Игорь_Vasinsky написал(а):
начни с
#^[http|https|ftp ....
Спустя 4 минуты, 20 секунд (2.07.2012 - 17:44) bobo написал(а):
Цитата (Игорь_Vasinsky @ 2.07.2012 - 19:39) |
начни с#^[http|https|ftp .... |
С этим как раз все нормально, я ж проблему вроде обозначил.
Спустя 1 час, 51 минута, 48 секунд (2.07.2012 - 19:35) bobo написал(а):
Если кому интересно, получилось так:
Т.е. перед закрывающим слэшем добавил (?:\s|$)
preg_match("/(?:^|[\n\s])((?:www\.)|(?:(ht|f)tp(s)?)(?:(\.|:\/\/)))+[\w\-]*(?:\.[а-яА-Яa-zA-Z]+)(?:\s|$)/is",$val)
Т.е. перед закрывающим слэшем добавил (?:\s|$)