2014-01-04 2 views
-1

Я пытался извлечь подпись, ссылку и ссылку на изображение из этого источника, и я использовал следующий preg_match, и он работает, но он дает только один набор, но я хочу, чтобы все было установлено. Например, здесь три набора, поэтому я хочу получить подробную информацию обо всех трех. Я знаю, что на якоре мы можем использовать getattribute ('title') alt и т. д., но как использовать здесь.Извлечь данные из этой строки

<urlset> 

    <url><loc>/1366x768/citroen-ds-cabrio-auto-car-wallshark-com-228615.html</loc><image:image><image:loc>s/1366x768/citroen-ds/228615/citroen-ds-cabrio-auto-car-wallshark-com-228615.jpg</image:loc><image:caption>Citroen Ds Cabrio Auto Car Wallshark Com Walpapers</image:caption></image:image></url> 

<url><loc>/1366x768/citroen-ds-cars-citro-n-cabrio-213157.html</loc><image:image><image:loc>s/1366x768/citroen-ds/213157/citroen-ds-cars-citro-n-cabrio-213157.jpg</image:loc><image:caption>Citroen Ds Cars Citro N Cabrio Walpapers</image:caption></image:image></url> 

    <url><loc>/1366x768/citroen-ds-citro-n-pictures-95569.html</loc><image:image><image:loc>s/1366x768/citroen-ds/95569/citroen-ds-citro-n-pictures-95569.jpg</image:loc><image:caption>Citroen Ds Citro N Pictures Walpapers</image:caption></image:image></url> 
    </urlset> 

вот мой PREG матч для заголовка и ссылки изображения, который прекрасно работает, но только для одного

  preg_match("/\<image:caption\>(.*)\<\/image:caption\>/",$str,$title); 

      preg_match("/\<image:loc\>(.*)\<\/image:loc\>/",$str,$title); 

, как заставить его работать, чтобы извлечь все детали

+3

использовать парсер вместо http://www.php.net/xml или http://www.php.net/simplexml –

ответ

0

Может быть, нужно preg_match_all вместо preg_match? Лучший подход:

preg_match_all("/<image:caption>.*?<\/image:caption>|<image:loc>.*?<\/image:loc>|<loc>.*?<\/loc>/", $text, $results); 
    $arr = array_chunk(array_map('strip_tags', $results[0]), 3); 
    print_r($arr); 

Выход:

Array 
(
    [0] => Array 
     (
      [0] => /1366x768/citroen-ds-cabrio-auto-car-wallshark-com-228615.html 
      [1] => s/1366x768/citroen-ds/228615/citroen-ds-cabrio-auto-car-wallshark-com-228615.jpg 
      [2] => Citroen Ds Cabrio Auto Car Wallshark Com Walpapers 
     ) 

    [1] => Array 
     (
      [0] => /1366x768/citroen-ds-cars-citro-n-cabrio-213157.html 
      [1] => s/1366x768/citroen-ds/213157/citroen-ds-cars-citro-n-cabrio-213157.jpg 
      [2] => Citroen Ds Cars Citro N Cabrio Walpapers 
     ) 

    [2] => Array 
     (
      [0] => /1366x768/citroen-ds-citro-n-pictures-95569.html 
      [1] => s/1366x768/citroen-ds/95569/citroen-ds-citro-n-pictures-95569.jpg 
      [2] => Citroen Ds Citro N Pictures Walpapers 
     ) 

) 
+0

он даст заголовок и URL-адрес изображения как один URL-адрес, но я хочу, чтобы оба были отдельно, чтобы я мог хранить их в базе данных – Priya

+0

@ user3026718, у вас будет 9 совпадений, и это правильно. вы можете проверить живую демонстрацию здесь: http://regex101.com/r/mN0xJ8 – revo

+0

согласен, но я не хочу вставлять эти 9 значений в 9 строк. i хочу вставить три столбца и три строки, поэтому 9 значений. но в ур кейс все пойдет в новую строку – Priya

Смежные вопросы