2016-12-08 9 views
1

У меня есть часть строки. Мне нужно проверить, будет ли она равна другой строке, когда я добавлю несколько символов. Однако мое использование разделителей (я считаю) не позволяет проводить матчи.preg_match не читает результаты: проблема с разделителем?

Мои IF заявление:

if (preg_match("{" . "$words[$counter_words]" . "[<]N}", "$corpus[$counter_corpus]")) 

Мой корпус:

{3(-)D[<]AN} 
{dog[<]N} 
{4(-)H(')er[<]N} 
{4(-)H[<]A} 
{A battery[<]h} 

Мой частичный массив следующим

dog 
cat 
3-D 
plant 

Моя цель состоит в том, чтобы соответствовать "собака" с «{собака [<] N} "([] и {} являются разделителями). Чтобы попытаться компенсировать это, я приклеиваю разделители к началу и концу строки. Preg_match принимает его, но не соответствует двум.

Каким будет решение этого вопроса? Я не могу найти или подумать о решении. Ваша помощь очень ценится.

+0

вам нужно уйти от специальных символов, соответствующих вашему –

+0

Хорошо. Изменит ли это «{» на «/ {/"? Что было бы «[<] N}»? "/ [<]/N /} /"? – drewtoby

+0

не так ли? я бы рекомендовал проверить его, чтобы узнать –

ответ

0
if (preg_match("{" . $words[$counter_words] . "\\[<\\]N}", $corpus[$counter_corpus])) 

[ и ] имеют особое значение в регулярных выражениях. Если вам не нужен специальный смысл, который вам нужно избежать, \[. Но поскольку это внутри строки PHP, чтобы получить символ \, вы должны ввести \\.

+1

или используйте preg_quote() –

+0

Спасибо! Должен ли я бежать? – drewtoby

+0

Специальные символы регулярного выражения:. \ + *? [^] $() {} =! < > | : - –

 Смежные вопросы

  • Нет связанных вопросов^_^