Не подскажите как найти минимальную строку между двумя соседними тегами <strong>, но так, чтобы между ними не было закрывающего тега </strong>?
Спустя 2 минуты, 17 секунд (1.12.2011 - 15:44) Winston написал(а):
Что значит минимальную? Самую короткую ?
Спустя 1 минута, 53 секунды (1.12.2011 - 15:46) yuriy написал(а):
Да, самую короткую.
Вот эту: '#<strong>(^</strong>*)<strong>#isU'
Вот эту: '#<strong>(^</strong>*)<strong>#isU'
Спустя 8 минут, 42 секунды (1.12.2011 - 15:54) Winston написал(а):
Так ?
$str = '<strong>Hello world, Where is you?</strong>';
preg_match_all("#<strong>(.*)</strong>#isuU", $str, $match);
$short = explode(' ', $match[1][0]);
$lens = array_map(create_function('$item', 'return mb_strlen($item, "UTF-8");'), $short);
$index = array_keys($lens, min($lens));
echo $short[$index[0]];
Спустя 55 секунд (1.12.2011 - 15:55) yuriy написал(а):
Под символом ^ имеется в виду отрицание, а не начало строки.
Спустя 5 минут, 34 секунды (1.12.2011 - 16:01) Winston написал(а):
Цитата (yuriy @ 1.12.2011 - 14:55) |
Под символом ^ имеется в виду отрицание, а не начало строки. |
Я знаю, а разве отрицание работает в группировке? В символьном классе то да, а здесь? В таком случае нужен негативный просмотр вперед (?!xxx)
Цитата (yuriy @ 1.12.2011 - 14:46) |
>* |
И нафига ты размножаешь знак больше?
Спустя 3 минуты, 45 секунд (1.12.2011 - 16:05) Winston написал(а):
Цитата (yuriy @ 1.12.2011 - 14:46) |
Да, самую короткую. |
Блин, так строку или слово минимальное ?
Спустя 10 минут, 10 секунд (1.12.2011 - 16:15) yuriy написал(а):
Чёт ахинею ты какую-то написал.
Нужно всего-навсего найти в строке все строки между тегами <strong>. При этом между тегами <strong> (в искомой строке) нет '<strong>' (минимальность строки) и '</strong>'.
Нужно всего-навсего найти в строке все строки между тегами <strong>. При этом между тегами <strong> (в искомой строке) нет '<strong>' (минимальность строки) и '</strong>'.
Спустя 46 секунд (1.12.2011 - 16:15) yuriy написал(а):
от эту: '#<strong>(^</strong>*)<strong>#isU'
Спустя 1 минута, 37 секунд (1.12.2011 - 16:17) yuriy написал(а):
Найти все минимальные строки '#<strong>(.*)<strong>#isU', но с условием, что ещё в (.*) нет '</strong>'.
Спустя 1 минута, 19 секунд (1.12.2011 - 16:18) Winston написал(а):
Цитата (yuriy @ 1.12.2011 - 15:15) |
Чёт ахинею ты какую-то написал |
Какой вопрос - такой ответ.
Дай мне строку в которой ты ищешь и, что должно найти - покажи !
Спустя 5 минут, 22 секунды (1.12.2011 - 16:24) yuriy написал(а):
'дядя Вася <strong>пошёл за <strong>молоком, а <strong>молоко</strong> убежало</strong></strong>'
Искомые строки тут:
1. пошёл за ;
2. молоком, а ;
Искомые строки тут:
1. пошёл за ;
2. молоком, а ;
Спустя 2 минуты, 40 секунд (1.12.2011 - 16:26) yuriy написал(а):
'дядя Вася <strong>пошёл за <strong>молоком, а <strong>молоко</strong> <strong>убежало</strong></strong>'
Искомые строки тут:
1. пошёл за ;
2. молоком, а ;
Строка 'молоко</strong> ' - не подходит, так как тут есть '</strong>'
Искомые строки тут:
1. пошёл за ;
2. молоком, а ;
Строка 'молоко</strong> ' - не подходит, так как тут есть '</strong>'
Спустя 10 минут, 58 секунд (1.12.2011 - 16:37) Игорь_Vasinsky написал(а):
Цитата |
Чёт ахинею ты какую-то написал |
Winston
И ты ещё в топике? добрейший души человек
PS как мне нравиться как ты умело с create_function шустришь. прям завидую.
Спустя 2 минуты, 34 секунды (1.12.2011 - 16:40) yuriy написал(а):
Да, Winston, извини, погорячился. Ну это я так, шутя, конечно. Но это не то, что нужно.
Спустя 13 минут, 54 секунды (1.12.2011 - 16:54) Winston написал(а):
Попробуй
$str = 'дядя Вася <strong>пошёл за <strong>молоком, а <strong>лоло</strong> убежало</strong></strong>';
preg_match_all("#(<strong>[^</>]+<strong>|(?<=<strong>).*<strong>)#isuU" , $str, $match);
echo '<pre>'.strip_tags(print_r($match, 1)).'</pre>';
Спустя 19 минут, 3 секунды (1.12.2011 - 17:13) yuriy написал(а):
В паттерн '(?<=<strong>).*<strong>' может же попасть </strong>. Зачем ещё эта добавка? Иля я что-то путаю?
Спустя 12 минут, 16 секунд (1.12.2011 - 17:25) yuriy написал(а):
Вообще, задача шире стоит немного. Финт с '[^</>]+' не проходит тоже, к сожалению.
Вот есть код:
Нужно, чтобы элементы $arrResult_1[1] и $arrResult_1[2] состояли из элементов в которых нет $endWord и $beginWord соответственно.
Вот есть код:
$str = 'sdfj sdflkjsdkf sdlfjlksd asd kllk; cdf fdsj fdlkgjlfdk lksdjfksd dsfdsf';
$beginWord = 'asd';
$endWord = 'cdf';
$pattern_1 = '#' . $beginWord . '(.*)' . $beginWord . '#isU';
$pattern_2 = '#' . $endWord . '(.*)' . $endWord . '#isU';
preg_match_all($pattern_1, $str, $arrResult_1, PREG_PATTERN_ORDER);
preg_match_all($pattern_2, $str, $arrResult_2, PREG_PATTERN_ORDER);
Нужно, чтобы элементы $arrResult_1[1] и $arrResult_1[2] состояли из элементов в которых нет $endWord и $beginWord соответственно.
Спустя 1 минута, 13 секунд (1.12.2011 - 17:26) yuriy написал(а):
Но сделать это нужно только через регулярку.
Спустя 7 минут, 22 секунды (1.12.2011 - 17:34) yuriy написал(а):
Ой, извиняюсь, не $arrResult_1[1] и $arrResult_1[2], а $arrResult_1[1] и $arrResult_2[1]
_____________
void x;