Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вытащить из
Форумы портала PHP.SU » » XML и его обработка » Вытащить из

Страниц (1): [1]
 

1. supirworeor - 26 Декабря, 2012 - 11:58:37 - перейти к сообщению
Задача: необходимо средствами PHP получить из FB2 обложку книги.
Сначала реализовал это следующим способом:



И это работало.
Но после массового извлечения обложек стало ясно, что изредка за binary[0] находится не то, что нужно. И поэтому необходимо уточнение в вызове.
Нужна логика вроде: "Получить значение элемента BINARY у которого атрибут ID равен COVER.JPG".

Как это реализовать?
Прошу дать пример решения данной или аналогичной задачи.

Структура того, что ищу:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <binary content-type="image/jpeg" id="cover.jpg">
  2. необходимые данные
  3. </binary>
2. esterio - 26 Декабря, 2012 - 12:30:50 - перейти к сообщению
Используйте if. Вы через simpleXML делаете?
3. supirworeor - 26 Декабря, 2012 - 12:31:53 - перейти к сообщению
esterio пишет:
Используйте if. Вы через simpleXML делаете?

Да, SimpleXML.
Про "if" можно чуть более развернуто?

По-любому придется выполнить цикл foreach по элементам binary. А как у каждого элемента проверять значение атрибута id?
4. esterio - 26 Декабря, 2012 - 12:41:15 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $xml = '<?xml version="1.0" encoding="UTF-8"?>
  3. <root>
  4.         <binary content-type="image/jpeg" id="cover.jpg">
  5.            необходимые данные
  6.         </binary>
  7.         <binary content-type="image/jpeg">
  8.            необходимые данные
  9.         </binary>
  10.         <binary content-type="image/jpeg" id="cover.jpg">
  11.            необходимые данные
  12.         </binary>
  13. </root>';
  14. $xml = simplexml_load_string($xml);
  15. foreach($xml->binary as $binary)
  16. {
  17.         if($binary->attributes()->id != 'cover.jpg')
  18.                 continue;
  19.         echo (string)$binary, '<br>';
  20. }


?
5. supirworeor - 26 Декабря, 2012 - 12:44:34 - перейти к сообщению
Да-да, вроде то, что нужно.
Благодарствую.

 

Powered by ExBB FM 1.0 RC1