PHP preg_match: «Текст-Текст-Целое число» дает неизвестный модификатор ‘-‘

#php

Вопрос:

У меня есть следующий код, который проверяет, есть ли в домене шаблон «Текст-Текст-целое число». Однако я получаю ошибку Неизвестный модификатор» -«, потому что — внутри не экранируется. Я пытался добавить раньше — но это не помогает.

 <?php

$get_keyword_value = "([a-zA-Z])-([a-zA-Z])-([0-9])";
$get_current_domain_value = "domain-id-555";

if(preg_match($get_keyword_value, $get_current_domain_value)){
    echo"Match";
}
else{
    echo"No match";
}
?>
 

Ответ №1:

Измените свой шаблон на этот:-

 $get_keyword_value = "/([a-zA-Z] )-([a-zA-Z] )-([0-9])/";
 

(Правка:- забыл добавить окончание двоеточия)

Ответ №2:

Шаблон должен быть разделен символом, например "/([a-zA-Z])-([a-zA-Z])-([0-9])/" , "@([a-zA-Z])-([a-zA-Z])-([0-9])@" , "#([a-zA-Z])-([a-zA-Z])-([0-9])#" или чем-то еще.

Это позволяет передавать модификаторы, например "/([a-zA-Z])-([a-zA-Z])-([0-9])/i" , для совпадения без учета регистра, например.

"([a-zA-Z])-([a-zA-Z])-([0-9])" будет использоваться () как разделитель. Затем движок пытается использовать модификаторы, и первый из них-тот - , которого не существует.

Примечание : Ваш шаблон не будет соответствовать вводу, потому ([a-zA-Z]) что будет выполняться поиск одного символа, но это другая тема