PHP Düzenli ifade, nasıl bir [sembol içeren ilk bölümünü maç için?

2 Cevap php

Sabahtan bu cevap aramak için denedim, ama hayır şans ile, i yapmak istediğiniz tüm dahil [dirseği ile maç [slayt veya [galerisi ..

kodu aşağıdaki gibidir.

$gallery = get_post_meta($post->ID, 'gallery', true);


if (preg_match("|^/[slideshow", $gallery)) {
    echo "Slideshow was forund";
} else if (preg_match("|^/[nggallery", $gallery)) {
   echo "Gallery was found";
} else {
   echo "No Match found - No Meta Data available"; 
}

The regular expression I've used, I though would work like this. search the start of the string, and using / would escape the [ from being used as part of the regular expression and be part of the search,

düzenli ifadeler daha fazla okuma yapmam rağmen, biraz daha net olur .... sadece benim bir şey değildir ..

2 Cevap

if (preg_match("/^\[slideshow/", $gallery)) {
    echo "Slideshow was fveyaund";
} else if (preg_match("/^\[nggallery/", $gallery)) {
   echo "Gallery was found";
} else {
   echo "No Match found - No Meta Data available"; 
}

Değişiklikler yaptı:

[ onun metachar olarak öncelenmesi gerekir, kullanılacak kaçış char \. Ayrıca preg_match ilk argüman (regex) uygun karakter arasında sınırlanmış bekliyveya. Yani yapabilirsiniz:

preg_match("/^\[slideshow/", $gallery)

veya

preg_match("|^\[slideshow|", $gallery)

Kaçış karakteri \ değil /. Ayrıca, regex başında olduğu gibi aynı sınırlayıcı ile regex bitirmek gerekir. Yani kod böyle bir şey olması gerekir:

preg_match("|^\[slideshow|", $gallery)