Regexp в PHP : need

dasha69

Есть текст, из кототорого надо вытащить все вхождения следующего вида:
[:какие-то символы:]
Пробовал что-то типа (\[:[a-zA-Z0-9]*:]\) - возвращает только первое совпадение, а в тексте их может быть несколько
very need

dasha69

а сам regexp под perl-совместимый попадает?
а если с помощью eregi делать?

artimon

Нет. Ты слеши неправильно поставил. Второй слеш должен быть перед квадратной скобкой, а не перед круглой. Ещё, лучше вместо звёздочки использовать плюс. Или тебе нужно, чтоб [::] тоже отлавливалось?
(\[:[a-zA-Z0-9]+:\])

dasha69

preg_match_all('(\[:[a-zA-Zа-яА-Я0-9]*:\])',$text,$reg) - работает
спасибо
возвращает:
Array
(
[0] => Array
(
[0] => []
[1] => []
[2] => []
)
)

artimon

Ты забыл разделители регулярного выражения.
Надо так:
preg_match_all('/(\[:[a-zA-Zа-яА-Я0-9]*:\])/',$text,$reg)

dasha69

а слэши я здесь только неправильно поставил - опечатка
с + тоже самое получаеться

artimon

~> php -r '$a = "some [:порусски:] lsdkf [:d045c:]dlk"; preg_match_all("/(\[:\w+:\])/",$a,$b); var_dump($b);'
array(2) {
[0]=>
array(2) {
[0]=>
string(12) "[:порусски:]"
[1]=>
string(9) "[:d045c:]"
}
[1]=>
array(2) {
[0]=>
string(12) "[:порусски:]"
[1]=>
string(9) "[:d045c:]"
}
}

Всё есть.

dasha69

спасибо
Оставить комментарий
Имя или ник:
Комментарий: