Страницы

Поиск по вопросам

пятница, 7 июня 2019 г.

Вернуть часть строки кроме

Всем добрый день! Как правильно составить регулярку, пробовал, но не получается то, что нужно. Есть много текста вида
"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)

Комментариев нет:

Отправить комментарий