PHP Регулярное выражение, как соответствовать первому разделу, который содержит символ [? - PullRequest
1 голос
/ 14 января 2010

Я пытался найти этот ответ все утро, но безуспешно, все, что я хочу сделать, это сопоставить [слайд-шоу или [галерею с включенной [скобкой ..

]

код следующий.

$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"; 
}

Регулярное выражение, которое я использовал, хотя я бы работал так. поиск в начале строки, и использование / исключит [от использования в качестве части регулярного выражения и будет частью поиска,

регулярные выражения - это не мое дело ... хотя чем больше читаю, тем яснее становится ...

Ответы [ 2 ]

7 голосов
/ 14 января 2010

Экранирующий символ \, а не /. Кроме того, вам нужно завершить регулярное выражение тем же разделителем, что и в начале регулярного выражения. Так что ваш код должен быть примерно таким:

preg_match("|^\[slideshow|", $gallery)
3 голосов
/ 14 января 2010
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"; 
}

Изменения сделаны:

[ необходимо экранировать как мета-символ, для которого необходимо использовать escape-символ \. Также preg_match ожидает, что его первый аргумент (регулярное выражение) будет разграничен между подходящими символами. Так что вы можете сделать:

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

или

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