Добрый день. Есть такой кусок: Код (PHP): <p><xpageslider> <photos> <img class="alignnone wp-image-869 size-full" src="http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/862/49268.jpg" alt="49268" width="800" height="500" /> <img class="alignnone wp-image-881 size-full" src="http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/795/5951184-gol.jpg" alt="5951184-gol" width="650" height="460" /> <img class="alignnone wp-image-817 size-full" style="line-height: 1.6471;" src="http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/812/ee0df52-kmax-4311-1.jpg" alt="Бла бла" width="650" height="460" /> </photos></xpageslider></p> В теге <photos> есть картинки. как мне получить массив со всеми <img>? простите, но в регулярках не селен. Помогите пожалуйста PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
не знаю насчет сейчас, а вообще наверное потому что регулярку можно вставлять "потом" не изменяя код.
это самый настоящий xml ))) Код (PHP): <?php $text = <<<EOT <p><xpageslider> <photos> <img class="alignnone wp-image-869 size-full" src="http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/862/49268.jpg" alt="49268" width="800" height="500" /> <img class="alignnone wp-image-881 size-full" src="http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/795/5951184-gol.jpg" alt="5951184-gol" width="650" height="460" /> <img class="alignnone wp-image-817 size-full" style="line-height: 1.6471;" src="http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/812/ee0df52-kmax-4311-1.jpg" alt="Bla bla" width="650" height="460" /> </photos></xpageslider></p> EOT; $xml = simplexml_load_string($text); foreach ($xml->xpageslider->photos->img as $img) { var_dump($img); } результат: Код (Text): class SimpleXMLElement#2 (1) { public $@attributes => array(5) { 'class' => string(32) "alignnone wp-image-869 size-full" 'src' => string(77) "http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/862/49268.jpg" 'alt' => string(5) "49268" 'width' => string(3) "800" 'height' => string(3) "500" } } class SimpleXMLElement#5 (1) { public $@attributes => array(5) { 'class' => string(32) "alignnone wp-image-881 size-full" 'src' => string(83) "http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/795/5951184-gol.jpg" 'alt' => string(11) "5951184-gol" 'width' => string(3) "650" 'height' => string(3) "460" } } class SimpleXMLElement#2 (1) { public $@attributes => array(6) { 'class' => string(32) "alignnone wp-image-817 size-full" 'style' => string(20) "line-height: 1.6471;" 'src' => string(91) "http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/812/ee0df52-kmax-4311-1.jpg" 'alt' => string(7) "Bla bla" 'width' => string(3) "650" 'height' => string(3) "460" } }
регулярка капризная штука. банальные переводы строки могут поломать программу. а что если битые контейнеры будут? а если плохо экранированные данные? в этом плане любой инструмент работающий с деревом дает преимущество - дерево автоматически можно попытаться восстановить, адресация не меняется от кол-ва переносов строк и табуляций. если изменился формат данных то меняется описание пути к данным. а в случае с релугяркой как ты понимаешь надо ответственно переписывать патерн. и да, xml и его производные уже иметь необходимые инструменты для работы с ними. не надо составлять для этого регулярки. тем более если познаний в регулярках ноль. ты же не разбираешь json посредством регулярок? а чо так? там же тоже вполне фиксированный формат лексем.
Код (PHP): $xml = simplexml_load_string($text); $array = array_map('strval', $xml->xpath('/p/xpageslider/photos/img/@src')); var_dump($array); xpath() очень удобная штука, но она возвращает массив объектов типа SimpleXMLElement, а не строки. поэтому понадобилось к каждому элементу массива применить strval() на выходе: Код (PHP): array(3) { [0] => string(77) "http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/862/49268.jpg" [1] => string(83) "http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/795/5951184-gol.jpg" [2] => string(91) "http://admin.insider.xpage.com.ua/wp-content/uploads/2015/10/19/812/ee0df52-kmax-4311-1.jpg" }
не знаю, я тут делал программу на C# она парсила разные сайты, получала определённые данные и записывала в файл, так вот на каждом сайте эти данные были в разных тегах и тому подобное, так же в программу надо было регулярно добавлять новые сайты, я сделал все это через регулярные выражения и все пахало как часы. а так с добавлением каждого нового сайта или изменение данных надо было бы в ручную дописывать код и по новой компилировать, если использовать дерево.