2015-04-03 4 views
0

У меня есть большое количество текстовых данных, которые здесь и там содержат много специального символа, и мне нужно проверить его на другие источники данных (текста).Сопоставьте точную строку, не беспокоясь о специальных символах

мой вопрос: возможно ли «избежать» строки в регулярном выражении, чтобы она не учитывала специальные символы?

пример:

$text = "My Random St. [486] s/n 445 (don't call these guys)"; 
preg_match("/$text/", $other_text); 

в примере здесь, есть много специальных символов в $text, как это огромное количество входящего текста можно сравнить с большим количеством $other_text строки, а иногда данные фактически содержат регулярные выражения), поэтому мне нужно использовать preg_match.

Что я получаю, есть ли «разделитель специальных символов в этой строке»?

с помощью описанного выше примера:

$text = "My Random St. [486] s/n 445 (don't call these guys)"; 
preg_match("/%$text%/", $other_text); 

Здесь % символов, окружающих $text указуют на то, что строка должна быть принято «буквальным» в противоположности как содержащие символы регулярных выражений.

любые идеи?

+0

Это буквальный пример, или это '$ text', используя текст заполнителя? Кроме того, можете ли вы обновить сообщение, чтобы объяснить, что вы имеете в виду, когда говорите «специальный символ» (например, у вашего примера нет специальных символов, которые я могу сказать, все это просто ASCII)? –

ответ

1

Метод, который вы ищете, называется preg_quote - он избежит любого соответствующего персонажа, чтобы иметь «равное, глупое» совпадение строк.

http://php.net/manual/en/function.preg-quote.php

$text = "My Random St. [486] s/n 445 (don't call these guys)"; 
preg_match("/". preg_quote($text, "/") . "/", $other_text); 

будет точно соответствовать заданной строке в другом тексте.

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