|
|
|
|
- <record>
- <title>
- <![CDATA[ слова ]]>
</title>
- <desc>
- <![CDATA[ слова ]]>
</desc>
- <url>
- <![CDATA[ слова ]]>
</url>
- <cl>
- <![CDATA[ слова ]]>
</cl>
<bol show="1">слова </bol>
</record>
|
Причем, записей record - много. Собственно, мне нужно получить в цикле в массив "слова". Ну и на каждом кругу цикла - новую запись record
Все мои попытки угадывания регугялярных - не дали успеха. Хотелось бы только на них - без xml. | |
|
|
|
|
|
|
|
для: Shorr Kan
(23.09.2005 в 04:48)
| | А тире тоже присутствуют напротив тэгов? | |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 14:41)
| | Нет, тире нет. Это яваскриптовые проделки. Чистые теги. С грязнотой внутри. Вот она и нужна... Разумеется, <![CDATA[ - тоже НЕ нужно, как и теги. | |
|
|
|
|
|
|
|
для: Shorr Kan
(23.09.2005 в 15:45)
| | А вы бы не могли бы прикрепить к сообщению реальный кусочек этого XML-файла? | |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 15:49)
| | Там не получается взять исходник файла... Я вам кусочек кода на почту (не хотелось бы ссылку тут писать) пошлю - сами увидите. | |
|
|
|
|
|
|
|
для: Shorr Kan
(23.09.2005 в 16:11)
| | Можно поступить примерно следующим образом
<?php
$text = file_get_contents('xml.txt');
// Подсчитываем число тэгов в строке
$number = substr_count($text,"[quote='");
// Осуществляем замену
$pattern = "|<record>[\s]*<title><!\[CDATA\[([^\]]+)\]\]></title>[\s]*<description><!\[CDATA\[([^\]]+)\]\]></description>[\s]*<url><!\[CDATA\[([^\]]+)\]\]></url>[\s]*<clickurl><!\[CDATA\[([^\]]+)\]\]></clickurl>[\s]*<clickurl>|isU";
preg_match_all($pattern, $text, $out);
echo "<pre>";
print_r($out);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 23:53)
| | А я еще предположил, что регулярки начал понимать... И все же - не работает. Примите почту. | |
|
|
|
|
|
|
|
для: Shorr Kan
(24.09.2005 в 09:14)
| | Хм... т.е. не везде имеется тэг <title>? Тогда лучше вытащить информацию в два приёма
<?php
$text = file_get_contents('xml.txt');
$pattern = "|<record>[\s]*<title><!\[CDATA\[([^\]]+)\]\]></title>[\s]*|isU";
preg_match_all($pattern, $text, $out);
echo "<pre>";
print_r($out);
echo "</pre>";
$pattern = "|<description><!\[CDATA\[([^\]]+)\]\]></description>[\s]*<url><!\[CDATA\[([^\]]+)\]\]></url>[\s]*[\s]*<clickurl><!\[CDATA\[([^\]]+)\]\]></clickurl>[\s]*|isU";
preg_match_all($pattern, $text, $out);
echo "<pre>";
print_r($out);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(24.09.2005 в 12:13)
| | Да, кажется сработало. Только я не понял, как распределились результаты... Массив получился двумерный, но что в нем к чему относится? $out[x][0] - это к первому результату, $out[x][1] - ко второму... или наоборот $out[0][x] ?.. | |
|
|
|
|
|
|
|
для: Shorr Kan
(25.09.2005 в 02:03)
| | По первому варианту
$out[x][0] - первый результат
$out[x][1] - второй результат
$out[x][3] - третий результат
$out[x][4] - четвёртый результат | |
|
|
|
|
|
|
|
для: cheops
(25.09.2005 в 13:40)
| | Да, все отлично. Спасибо большое. | |
|
|
|