Есть строка: HTML: <div id="prj123" class="test"><div class="form">текст</div><div class="form_in"><ul><li>текст3</li></ul></div></div> <div id="prj124" class="test"><div class="form">текст2</div><div class="form_in"><ul><li>текст32</li></ul></div></div> и т.д. Мне нужно массив сделать, чтобы напиример 1 элемент этого массива был <div id="prj123" class="test"><div class="form">текст</div><div class="form_in"><ul><li>текст</li></ul></div></div> Второй <div id="prj124" class="test"><div class="form">текст</div><div class="form_in"><ul><li>текст</li></ul></div></div> И т.д. Но у меня не получается составить регулярное выражение для этого, пробывал такое: Код (Text): /<div id=\"[^`]*\" class=\"testl\">[^`]*\<\/div>/ Но здесь немного не правильно, т.к. div ещё закрывается внутри div`а, который мне нужен Подскажите пож-та как такое реализовать?
PHP: <?php $str = <<<STR <div id="prj123" class="test"><div class="form">текст</div><div class="form_in"><ul><li>текст3</li></ul></div></div> <div id="prj124" class="test"><div class="form">текст2</div><div class="form_in"><ul><li>текст32</li></ul></div></div> STR; preg_match_all('/<div id="prj.*v><\/div>/Usi', $str, $match); var_dump($match);
Блин, думал разберусь. Тогда вот настоящий div, который будет, с ним почему-то не проходит такая штука. Вот какие div у меня (это один из них): HTML: [b]<div class="test" id="prj786272">[/b] <div class="form"> <div class="form-in"> <var class="bujet">text</var> <a href="http://" target="_blank"> <img src="" alt="" class="prj-clogo" /> </a> <h3> <img src="/images/tp.png" alt="" /> <a name="prj786272" href="/projects/?pid=786272"> text2 </a> </h3> <div class="prj-full-display"> <div class="utxt"> <p>text3</p> </div> <div id="project-reason-786272" style="display: none"> </div> <ul class="prj-info c"> <li class="pi-answer"> <a href="">text4</a> </li> <li class="pi-payed">text5</li> <li class="pi-time">text6</li> </ul> </div> </div> </div> [b]</div>[/b] С такими не работает( Почему?
ну можно как то так HTML: preg_match_all('/<div class="test" id="prj.*<\/div>\s*<\/div>\s*<\/div>\s*<\/div>/Usi', $str, $match);
Ещё проблема возникла( Вот такой html, помогите пож-та: HTML: <tr> <td class="center-align"> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="8" height="8" id="imgM" align="bottom" border="0"> <param name="allowScriptAccess" value="sameDomain"/> <param name="movie" value=""> <param name="quality" value="high"/> <param name="bgcolor" value="#937E51"/> <embed src="" quality="high" bgcolor="#937E51" width="8" height="8" name="imgM" align="top" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/> </object> </td> <td align="left" style="smalltext"> <a href=""> ТЕСТ1 </a> </td> <td align="center" style="smalltext"> ТЕСТ4 </td> <td align="center" style="smalltext"> ТЕСТ </td> </tr> Вот такие <tr> есть, во всех td разные данные в каждой tr. Мне нужно чтобы preg_match_all возвращал массив tr в которой в последний td равен "ТЕСТ". Я такой написал: PHP: <?php preg_match_all('/<tr>\r\n[ ]{10}<td class="center-align">\r\n[ ]{12}<object.*>.*<\/object>\r\n[ ]{10}<\/td>.*<td align="center" style="smalltext">.*<td align="center" style="smalltext">.*ТЕСТ.*<\/tr>/Usi', $pars, $pars2); ?> Но возвращает все tr до "ТЕСТ" и следущее элементы массива также. Конечно можно было доработать explode`м, но хотелось бы одним рег выражением, но не получается( P.S. Что означает Usi?
У меня есть такая картинка. Значит Usi это U s i, да? Что-то и не догадался... А почему моё выражение не правильно работает?