Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Помогите составить регулярное выражение


Автор: Azalis 2.1.2008, 20:37
Друзья мои, помогите пожалуйста составить регулярное выражение. 

Есть некая строка, в которой нужно найти все совпадения вида {[this]->[!!!HERE!!!]} , где !!!HERE!!! любые строки с символами A-Za-z0-9.
Совпавшие строки нужно сложить в массив.

Используемая тут функция на сколько я понимаю, это preg_match(); а вот само выражение очень прошу помочь составить, ато у мпеня не получается что - то..

Мои махинации:
Код

$str = "vasfv iuhefu hfopua bgh p8{[this]->[test]}da9v8*)(D809dva80*(*0(8e)(*()*R{[this]->[start]}F)(*Gv089{}[]ev]fsdfbd]}))dfbsd)))vsa)";
preg_match("{\[this\]->\[|a-zA-Z0-9|\]}",$str,$arr);

foreach ($arr as $key => $val)
{
    print $key." :: ".$val;
}

Автор: smartov 2.1.2008, 21:05
Azalis, тебе нужна функция preg_match_all

Этот код
Код

<?

$str = "vasfv iuhefu hfopua bgh p8{[this]->[test]}da9v8*)(D809dva80*(*0(8e)(*()*R{[this]->[start]}F)(*Gv089{}[]ev]fsdfbd]}))dfbsd)))vsa)";

preg_match_all('/\[this\]->\[([^\]]*)\]/', $str, $matches);

print_r($matches);

?>


Возвращает
Код

Array
(
    [0] => Array
        (
            [0] => [this]->[test]
            [1] => [this]->[start]
        )

    [1] => Array
        (
            [0] => test
            [1] => start
        )

)


Автор: Azalis 2.1.2008, 21:19
оо... Спасибо, то, что нужно )

Автор: DioNiR 3.1.2008, 08:18
Если проблема решена то надо помечать как решённую.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)