Xwab
Форумыnavigate_nextПрограммирование на PHP

Помогите с регуляркой
Сообщения
M0rbid

Есть текст вида:

<a><a><a><a>e</a>d</a>c</a>b</a>
text

нужно из него вырезать все вида <a>.+?</a>, причем рекурсивно, с глубины.
Так чтоб в итоге получилось:

text

а не:

d</a>c</a>b</a>
text

и прочие косяки.

поможет кто?

26 Май 2011, 13:25
Signum

$text = '<a><a><a><a>e</a>d</a>c</a>b</a>text</a>';
preg_match('/<a>(.*)<\/a>/s', $text, $o);

не то?

26 Май 2011, 13:31
manyrus

Signum, var_dump($o);

array(2) {
  [0]=>
  string(40) "<a><a><a><a>e</a>d</a>c</a>b</a>text</a>"
  [1]=>
  string(33) "<a><a><a>e</a>d</a>c</a>b</a>text"
}

26 Май 2011, 13:35
Signum

оу, я дурак


__________
посл.ред. 26 Май 2011, 13:37; всего 1 раз 26 Май 2011, 13:36
M0rbid

Signum,
нужно preg_replace('?????', '', $text);

не то, так вырежет как я говорил, по первый закрывающийся </a>.

26 Май 2011, 13:37
Signum

M0rbid, не, по последний

26 Май 2011, 13:37
M0rbid

Signum, или по последний.
прикол в том, что </a> может быть и внутри text и после него.
Задача - вырезать все теги <a> которым есть пара, рекурсивно

26 Май 2011, 13:39
Signum

а остальные оставить?
что должно в итоге получиться?

26 Май 2011, 14:10
~Susanin~

Signum,

Так чтоб в итоге получилось:

text

26 Май 2011, 14:18
M0rbid

Signum,

<a><a><a></a></a></a>text</a>
vvvvvvvvv
text</a>


<a><a><a><a></a></a></a>text</a>
vvvvvvvvv



<a><a><a></a></a></a>text</a><a></a>
vvvvvvvvv
text</a>



<a><a><a></a></a></a>text<a></a>
vvvvvvvvv
text



<a><a></a></a></a>text</a>
vvvvvvvvv
</a>text</a>

26 Май 2011, 14:22
Ответить на тему