PHP: поиск подстроки в строке с использованием preg_match? - PullRequest
0 голосов
/ 09 сентября 2010

Я пытаюсь создать функцию для проверки подстроки в строке в php.

public static function stringCheck ($string, $substring) {
  $patern = "/".$substring."/";

  if (preg_match($substring, string) {
    return true;
  }
  else return false;
}

, но если я введу специальный символ, используемый в preg_match (^. [$ () | * +? {), Это обернется поиском.

Я пробовал что-то вроде приведенного ниже кода, но это не сработало

$speicalChar = '/(\^|\.|\[|\$|\(|\)|\*|\+|\?|\{|\\)/';

У любого есть решение или альтернатива preg_match. Имейте в виду, что я тоже хочу иметь возможность проверять символы. Я пытался использовать strstr, но у меня были проблемы с символами.

Спасибо =]

Ответы [ 2 ]

5 голосов
/ 09 сентября 2010
$pattern = '/' . preg_quote($substring, '/') . '/';

Это экранирование специальных символов для вас.Также передайте '/', чтобы он также был экранирован, поскольку вы используете его в качестве разделителя.

Еще одна вещь, исправляет некоторые опечатки в условии if:

if (preg_match($pattern, $string)) {
4 голосов
/ 09 сентября 2010

Есть ли причина, по которой вы хотите использовать preg_match? Это должно быть регулярное выражение? А как насчет strpos()?

Возвращает числовое положение первого вхождения иглы в строке сена.

public static function stringCheck ($string, $substring) {
  return (strpos($string, $substring) !== false);
}

Если у вас нет причин использовать регулярные выражения, не используйте их.

Обновление

Относительно комментария о public static: не создавайте классы для сбора функций (похоже, вы делаете это здесь) Это не имеет смысла. Просто создайте нормальные функции и включите их в свои скрипты. Используйте классы для реального ООП.
Btw. Вы должны рассмотреть более выразительное имя для своей функции. stringCheck довольно расплывчато (что он проверяет?).

...