php regex - не могу найти ошибку - PullRequest
0 голосов
/ 01 июня 2010

Всего один простой конкретный вопрос:
У меня есть строка {var1}12345{var2}, и я хочу получить используемые имена переменных.

if (preg_match("/{([a-zA-Z0-9]*)}/g", $url, $matches)) {
    print_r($matches);
}

Если я удаляю глобальный флаг, он работает, но я получаю только первую переменную, как и ожидалось. Почему он не работает с глобальным флагом? Он работает, когда я тестирую его с помощью Regex Tester

Ответы [ 3 ]

3 голосов
/ 01 июня 2010

С PHP: preg_match :

preg_match () возвращает количество совпадений с шаблоном. Это будет либо 0 раз (без совпадений), либо 1 раз, потому что preg_match () остановит поиск после первого совпадения . preg_match_all (), напротив, будет продолжаться, пока не достигнет конца темы. preg_match () возвращает FALSE, если произошла ошибка.

2 голосов
/ 01 июня 2010

Используйте preg_match_all , чтобы получить несколько совпадений:

if (preg_match_all("/{([a-zA-Z0-9]*)}/", $url, $matches)) {
    print_r($matches[1]);
}
1 голос
/ 01 июня 2010

Это должно помочь (если вам нужны переменные в формате {имя} ):

$url = "{var1}12345{var2}";

if (preg_match_all("/{[a-zA-Z0-9]*}/", $url, $matches)) {
    print_r($matches);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...