Всем добрый день! Как правильно составить регулярку, пробовал, но не получается то, что нужно. Есть много текста вида
"rwrwerw rewrwr http://www.site1.com rewrwrw rewrewrwe needword rewrewrewrwe fdsfasfafdsa http://www.site2.com fdsafsafdsafsaf rewrewrew rewrewrewrwe fdsfasfafdsa http://www.site3.com fdsafsafdsafsaf rewrewrew"
Как можно разбить текст разделителем по слову "http://www.site.com" регуляркой с сохранением содержимого регулярки. Или найти/вернуть куски текста "http://www.site.com fdsfsaf fdsfsaf" включающие http://www.site.com в начале, но исключающие следующий http://www.site.com. Следующий http://www.site.com будет со своим последующим текстом. Перепробовал кучу вариантов, но что-то не получается. Такой вариант вроде подходит
~((?:http|https)://.?)(?=[\s]+).?(?=(?:http|https))~is
Но preg_match_all возвращает подстроки с site1 и site2, а блок текста с site3 не возвращает
Ответ
$str = 'rwrwerw rewrwr http://www.site1.com rewrwrw rewrewrwe needword rewrewrewrwe fdsfasfafdsa http://www.site2.com fdsafsafdsafsaf rewrewrew rewrewrewrwe fdsfasfafdsa http://www.site3.com fdsafsafdsafsaf rewrewrew';
$patt = '~https?://.+?(?=https?|$)~';
preg_match_all($patt, $str, $arr);
var_dump($arr);
Результат:
array (size=1)
0 =>
array (size=3)
0 => string 'http://www.site1.com rewrwrw rewrewrwe needword rewrewrewrwe fdsfasfafdsa ' (length=74)
1 => string 'http://www.site2.com fdsafsafdsafsaf rewrewrew rewrewrewrwe fdsfasfafdsa ' (length=73)
2 => string 'http://www.site3.com fdsafsafdsafsaf rewrewrew' (length=46)
Комментариев нет:
Отправить комментарий