Нужно регулярное выражение с использованием PHP

0

У меня есть этот сегмент xml.

<condition name="gender" value="male">
    <condition name="somethingelse" value="somevalue">Target string</condition>
</condition>

Вы можете видеть, что они вложены.

Что мне нужно сделать, так это получить среднее условие, содержащее "целевую строку".

Вероятно, люди захотят использовать XML-парсер или что-то еще, но я хочу сделать это с помощью регулярного выражения.

Я перепутал с регулярным выражением, но я просто не знаю их достаточно хорошо.

Возьмите это, например.

$regex = '<condition name="[a-z0-9]+" value="[a-z0-9]+">([^<>].*?)<\/condition>';
preg_match_all ( '/' . $regex . '/i', $haystack, $stuff );

То, что я пытался сделать, было совпадение с тегами, но игнорировать все, что содержит <или>, таким образом избегая ничего, что не содержит текст.

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

Все, что он делает, это дать этот матч, так что я частично туда:

<condition name="gender" value="male"> <condition name="somethingelse" value="somevalue">Target string</condition>

Может ли кто-нибудь помочь?

Теги:

1 ответ

1
Лучший ответ

Вот регулярное выражение, которое будет работать (по крайней мере, в простом случае, описанном выше):

$regex = '/<condition name="[a-z0-9]+" value="[a-z0-9]+">([^<>]*)<\/condition>/';

Обратите внимание, что я удалил вопросительный знак (не уверен, для чего он предназначен) и поставил звездочку после [^<>] а не после периода. Строка [^<>]* указывает, что она соответствует нулю или нескольким символам не в наборе {<,>}.

  • 0
    Большое спасибо, это работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню