![]() |
Регулярные выражения помогите
В общем у меня вопрос по регулярным выражениям, помогите составить его? пожалуйста.
Имеется: <w3s.response> <reqn>1234567</reqn> <retval>dsdsad</retval> <retdesc>dasdjghj</retdesc> <invoice id="432" ts="bla bla bla"> <orderid>gfdgdfg</orderid> <customerwmid>gfdgfd</customerwmid> </invoice> </w3s.response> нужно извелчь значения заключающеся в тегах <reqn></reqn> и в теге invoice id= то есть в PHP $str=file_get_contents("x1.xml"); preg_match("регулярное выражение", $str, $stre); print_r($stre); и еще, если можно составить выражение для извлечения просто <reqn> </reqn> PS просьба не предлагать использовать стандартыне PHP функции XML парсинга. Спасибо надеюсь на вашу помощь! |
зачем забивать гвозди микроскопом?
для этой задачи не регэкспы нужны, а xml-xsl преобразование вот xsl, который делает то, что тебе надо: PHP код:
|
Цитата:
preg_match (".reqn.(.*)..reqn.", $str1, $str2) там возможно еще в начале и в конце надо добавить по символу "/" - но это не точно помню, "точка" - это любой символ - просто возможно символы <>/ могут неверно обработаться и их надо экранировать, чтобы это не делать я частенько точку ставлю если это не создает множественности всяких результатов :yees: |
Цитата:
XML я беру на стороннем сервере! Цитата:
ну да оно работает но масив имеет такой вид Array ( [0] => <reqn>1234567</reqn> [1] => 1234567 ) а я хотел бы чтобы вот так Array ( [0] => 1234567 ) |
вырежи лишний элемент из массива, возвращенного функцией. preg_match всегда возвращает в качестве одного из элементов весь стринг, сматченный регэкспом, так что одну только цифровую строку ты не получишь.
|
Цитата:
Цитата:
PHP код:
возьми такой XSL: PHP код:
поверь, это гораздо грамотнее, чем применять к XML регэкспы |
и кто ж тут гвозди микроскопом забивает. Если нужно всего лишь взять один стринг из xml-документа и забыть про исходник - зачем запускать xslt-процессор и прочий оверхед? Такое решение будет быстрее, проще, понятнее, короче или в чём его преимущество-то - в философской кошерности?
|
уже, как минимум, не один, а два ;) - внутренности тега и содержимое атрибута
а если этот XML изменят так, что появится не атрибут id, а тег <id>? или добавят id к любому другому, не только к <invoice>? тогда решение на регекспах накроется медным тазиком. зачем создавать себе трудности там, где без этого можно обойтись? |
а я всё-таки за решение с regexp'ами... далеко не все хостеры подключают xslt процессор к апачу, зато регэкспы 100% у всех прокатят...
|
| Часовой пояс GMT +4, время: 18:08. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.