Здравствуйте Мне надо с помощью регулярных выражений найти все теги strong на странице в которых есть слово Привет. Так вот, шаблон такой |<strong(.*)> *?Привет *?</strong>|i В случае если html код в котором он ищет такой: Код (Text): <strong>Привет</strong> То он находит Если html код такой: Код (Text): <strong> Привет </strong> Он не находит. Пробовал делать так: |<strong(.*)> *?Привет *?</strong>|iUs Но все равно не работает. Помогите решить проблему пожалуйста. Заранее спасибо!
Код (PHP): $str='<strong> Привет </strong> <strong>Привет</strong>'; preg_match_all('/<strong>Привет<\/strong>/',preg_replace('/[\n\s]/','',$str),$matches); var_dump($matches);
Ganzal делал я M все равно не работает Добавлено спустя 5 минут 38 секунд: Your делаю поиск в html коде по как ты сказал: Код (Text): preg_match_all($sregular,preg_replace('/[\n\s]/','',strtolower_my($html)),$matches); var_dump($matches); Где $sregular равно |прив(.*) *?дру(.*) *?мо(.*) *?<\/strong>|i Мне надо находить именно такую комбинацию слов прив(.*) *?дру(.*) *?мо(.*) *? в большом HTML коде Не находит...
Код (PHP): <?php $str='<strong> Привет </strong> <strong>НеПривет</strong>'; preg_match_all('#<strong>.*</strong>#iUms', $str, $matches); var_dump($matches); ?> Код (Text): array(1) { [0]=> array(2) { [0]=> string(31) "<strong> Привет </strong>" [1]=> string(33) "<strong>НеПривет</strong>" } } ну фиг знает...
Ganzal, с iUms он находит в html коде то что мне надо, но также находит много того, чего мне не надо. Вот результат моего RegExp совместно с iUms: Код (Text): <strong>золотой фонд портала</strong></a></li> <li><a href="bestpoemaut.php"><strong>копилка</strong></a></li> </ul> </li> <li><a href="/radio.php" rel="nofollow">радио эфир</a> <ul> <li><a href="/radio.php" rel="nofollow"><strong>эфир</strong></a></li> <!--<li><a href="/avtor.php?author=5&poem=74465" rel="nofollow"><strong>заявки</strong></a></li>--> <li><a href="/avtor.php?author=5&poem=74466" rel="nofollow"><strong>отзывы</strong></a></li> </ul> </li> <li><a href="meropriatia.php">мероприятия портала</a></li> <li><a href="schet.php">дополнительные услуги</a></li> <li><a href="#">издания / публикации</a> <ul> <li><a href="kniga.php"><strong>сборник "среди тычячи звезд"/strong></a></li> <li><a href="/files/litkrim.pdf" rel="nofollow"><strong>газета "литературный крым"</strong></a></li> </ul> </li> <img alt="xds.jpg" /><img alt="xds.jpg" /> <li><a href="bookshop.php">книжная лавка</a></li> <li><a href="#">рубрикатор</a> <ul> <strong>привет друг мой </strong> Из этого всего мне надо только <strong>привет друг мой </strong> А он выдает мне еще кучу мусора
ну наверное потому что я искал любую последовательность между открывающимся и закрывающимся тегами, а не только "привет мой друг" Код (PHP): <?php $str='<strong>золотой фонд портала</strong></a></li> <li>[url="bookshop.php"]книжная лавка[/url]</li> <li>[url="#"]рубрикатор[/url] <ul><strong>привет друг мой </strong> <strong> Привет </strong> <strong>Привет</strong>'; preg_match_all('#<strong>[^<]*привет[^<]*</strong>#iums', $str, $matches); var_dump($matches); ?> Код (Text): array(1) { [0]=> array(3) { [0]=> string(47) "<strong>привет друг мой </strong>" [1]=> string(32) "<strong> Привет </strong>" [2]=> string(29) "<strong>Привет</strong>" } }
Ganzal, нет давай я тебе объясню для чего это мне что бы ты помог. В общем есть предложение "Привет мой друг" Я его разбиваю на слова и в конце каждого слова вырезаю 1-2 символа, то есть окончания могут быть любыми. Теперь мне надо найти в огромном HTML коде все теги стронг в которых присутствует вхождения этих фраз с любыми окончаниями. Получается как-то так: Код (Text): $sregular = '#<strong(.*)>'; for($i=0; $i<count($pieces); $i++) { if(mb_strlen($pieces[$i], 'utf-8')<=4) {$pieces[$i] = mb_substr($pieces[$i],0,mb_strlen($pieces[$i], 'utf-8')-1,'utf-8');} else {$pieces[$i] = mb_substr($pieces[$i],0,mb_strlen($pieces[$i], 'utf-8')-2,'utf-8');} $sregular.=strtolower_my($pieces[$i]).'(.*) *?'; } $sregular.='</strong>#iums'; То есть здесь мы выстраиваем Регулярное выражение которое должно искать все теги Strong в огромном html коде в которых присутствует обрезанные вхождения слов. То есть по сути он должен искать все подобное этому: <strong>Прив[а-я]+ Мо[а-я]+ Дру[а-я]+</strong> Помоги пожалуйста решить эту задачу, второй день не получается сделать
ахаха, красавчик. ну я пожалуй обойдусь двумя решениями двух поставленных задач. если ты сходу не можешь сформулировать то чего тебе надо, прячешь от нас что-то, то нафига мне вообще тебе помогать? я вот не хочу в третий раз увидеть "нет, это не то что нужно потому что задача в моей голове меняется со скоростью ядерного синтеза"
Регулярные выражения в PHP это муть сплошная... В общем спасибо и на том чем уже помог, теперь хотя бы лучше немного.
Если в PHP Perl то там POSIX и наоборот Добавлено спустя 11 минут 34 секунды: Слушай подскажи вот что, мое рег выражение правильно работает, но оно зацепляет за собой целую кучу мусора, не подскажешь как сделать так, что бы скрипт искал именно нужное мне совпадение и не трогал ничего рядом?
Моя задача сделать это сейчас на PHP а не на Java Script поэтому терять времени не собираюсь, лучше пойду почитаю в инете про регулярки в пиЭйЧпИ
это не значит что оно правильно работает. правильно работает это когда фактический результат совпадает с ожидаемым. какая регулярка-то?
Я уже 1000 вариантов испробовал но так и не достигнул нужного результат.... В общем вот такая Код (Text): |<strong> *?прив(.*)дру(.*)мо(.*)</strong>|iUms Должна искать вхождение 3х слов подряд с разным окончаниями Добавлено спустя 4 минуты 6 секунд: Хотя наверное так было бы точнее Код (Text): |<strong> *?прив.{2,7} *?дру.{2,7} *?мо.{2,7} *?</strong>|iUms
<strong>_Тут много пробелов может быть_Прив_Много Много Символов может быть, то есть окончание __Много пробелов_дру_Много Много Символов может быть, то есть окончание __Много пробелов_мо_Много Много Символов может быть, то есть окончание __Много пробелов_</strong>|не чувствителен к регистру, нежадный шаблон, многострочность(нерабочая),читать одной строкой(нифига не читает) Где косяки?
Блин а в JS это читать одной строкой... Добавлено спустя 13 минут 38 секунд: А ты сам то знаешь как это реализовать?
В <strong></strong> может находиться любая информация? Нужно пробовать callback функции для этих целей, и самим делать проверки. Или как то умудриться написать условие (проверку на правильность). Похоже тут самому придумывать выход придется разложить и записывать.=)
Priler, ты давай обидулек-то не кидай. помощь это когда "я делаю вот это но не получается. что не так?". а "сделай раз знаешь" - это в другом разделе. я-то знаю как сделать, и дважды пальцем в небо попал ибо задача была некорректно поставлена. ок, допустим сейчас задача поставлена корректно. теперь словами формулируется логика шаблона и потом уже пишется регулярка. одна, или с колбеками - уже по обстоятельствам.