Доброго времени суток.
В регулярках не силён, поэтому обращаюсь за помощью.
есть строка тегов
PHP |
$buffer = "<spoiler>SPOILER1</spoiler><spoiler>SPOILER2</spoiler><spoiler>SPOILER3</spoiler>"; |
SQL |
Array ( [0] => SPOILER1 [1] => SPOILER2 [2] => SPOILER3 ) |
PHP |
preg_match_all("/(<spoiler.*>)(\w.*)(<\/spoiler>)/ismU",$buffer,$content1) |
PHP |
[0] => Array |
PHP |
[1] => Array |
Цитата (atarix @ 15.07.2009 - 21:52) |
а почему тогда приходят пустые массивы ? |
Цитата (atarix @ 15.07.2009 - 21:52) |
Как можно получить массив вида, указанного выше ? |
Цитата (kirik @ 16.07.2009 - 03:43) | ||||
Потому что нужно разобраться что именно приходит и почему. Нулевой элемент массива - полная строка, поподающая под шаблон, первый - первая скобочка в паттерне, а точнее то, что совпало с ней (в твоем случае это тэг), второй - вторая скобочка (в твоем случае это текст внутри тэгов), третий - третья скобочка, закрывающий тэг. Можно предположить, что подобный массив ты выводишь через <pre></pre>, следовательно тэгов ты не видишь, а если заглянуть в код страницы, то ты увидишь настоящий массив.
$content1[2] Советую разобраться с массивами, очень полезно (и вкусно) |
Цитата (atarix @ 15.07.2009 - 22:58) |
опрос такой - можно ли получить последовательность содержимых тега - без "проблемы" соответствия открытого тега - закрытому, и как ? |
Код |
/(?:<spoiler.*>)(\w.*)(?:<\/spoiler>)/ismU |
Цитата |
Вопрос, а зачем здесь вообще нужны скобочки (), если паттерны не нужно запоминать (я о тех, что внутри тегов)? |
PHP |
function ParseSpoiler(&$content) |
Цитата (atarix @ 17.07.2009 - 08:14) | ||
|
PHP |
function ParseSpoiler($buffer) |
PHP |
$spoiler[0]= |
PHP |
$spoiler[1]= |
Цитата (kirik @ 17.07.2009 - 14:13) |
atarix любитель поизвращаться А как же любые символы после <spoiler? (<spoiler.*>) |