| imho.ws |
![]() |
|
|
|
# 1 |
|
Member
Регистрация: 17.03.2005
Адрес: Kiev
Сообщения: 235
![]() ![]() ![]() ![]() |
Регулярные выражения помогите
В общем у меня вопрос по регулярным выражениям, помогите составить его? пожалуйста.
Имеется: <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 парсинга. Спасибо надеюсь на вашу помощь!
__________________
Каждый может сказать, что он может сделать что-то лучше других, но на практике - очень часто не так. |
|
|
|
|
# 2 |
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
зачем забивать гвозди микроскопом?
для этой задачи не регэкспы нужны, а xml-xsl преобразование вот xsl, который делает то, что тебе надо: PHP код:
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. |
|
|
|
|
# 3 | |
|
::VIP::
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
preg_match (".reqn.(.*)..reqn.", $str1, $str2) там возможно еще в начале и в конце надо добавить по символу "/" - но это не точно помню, "точка" - это любой символ - просто возможно символы <>/ могут неверно обработаться и их надо экранировать, чтобы это не делать я частенько точку ставлю если это не создает множественности всяких результатов
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным. |
|
|
|
|
|
# 4 | ||
|
Member
Регистрация: 17.03.2005
Адрес: Kiev
Сообщения: 235
![]() ![]() ![]() ![]() |
Цитата:
XML я беру на стороннем сервере! Цитата:
ну да оно работает но масив имеет такой вид Array ( [0] => <reqn>1234567</reqn> [1] => 1234567 ) а я хотел бы чтобы вот так Array ( [0] => 1234567 )
__________________
Каждый может сказать, что он может сделать что-то лучше других, но на практике - очень часто не так. |
||
|
|
|
|
# 5 |
|
::VIP::
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
вырежи лишний элемент из массива, возвращенного функцией. preg_match всегда возвращает в качестве одного из элементов весь стринг, сматченный регэкспом, так что одну только цифровую строку ты не получишь.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti |
|
|
|
|
# 6 | ||
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
![]() Цитата:
PHP код:
возьми такой XSL: PHP код:
поверь, это гораздо грамотнее, чем применять к XML регэкспы
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. Последний раз редактировалось BorLase; 05.01.2007 в 18:15. |
||
|
|
|
|
# 7 |
|
::VIP::
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
и кто ж тут гвозди микроскопом забивает. Если нужно всего лишь взять один стринг из xml-документа и забыть про исходник - зачем запускать xslt-процессор и прочий оверхед? Такое решение будет быстрее, проще, понятнее, короче или в чём его преимущество-то - в философской кошерности?
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti |
|
|
|
|
# 8 |
|
::VIP::
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
уже, как минимум, не один, а два
- внутренности тега и содержимое атрибутаа если этот XML изменят так, что появится не атрибут id, а тег <id>? или добавят id к любому другому, не только к <invoice>? тогда решение на регекспах накроется медным тазиком. зачем создавать себе трудности там, где без этого можно обойтись?
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people. |
|
|
|
|
# 9 |
|
Newbie
Регистрация: 03.03.2005
Сообщения: 10
![]() |
а я всё-таки за решение с regexp'ами... далеко не все хостеры подключают xslt процессор к апачу, зато регэкспы 100% у всех прокатят...
__________________
Магазины, фирмы, организации, предприятия, адреса, телефоны, сайты, гостиницы, банки, такси, клубы. Cправочник Магнитогорска. http://www.mabs.ru |
|
|