php regex - hata bulamıyorum

3 Cevap php

Just one simple, specific question:
I've got the string {var1}12345{var2}, and I want to get the variable names used.

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

Ben genel bayrağını kaldırmak, çalışır, ancak beklendiği gibi ben sadece ilk değişken olsun. Neden küresel bir bayrak ile çalışıyor değil mi? Ben Regex Tester ile test ediyorum zaman çalışır

3 Cevap

Dan PHP: preg_match:

preg_match () desen eşleşen sayısını döndürür. Bu da 0 kez (hayır maç) veya 1 kez olacak, çünkü preg_match() will stop searching after the first match. Bu konunun sonuna ulaşıncaya kadar tersine preg_match_all () devam edecektir. Bir hata oluştu ise preg_match () FALSE döndürür.

preg_match_all birkaç maç almak için kullanın:

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

Bu hile yapmak (eğer biçiminde değişkenleri ihtiyaç {name}) olmalıdır:

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

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