PHP:使用preg_match搜索字符串中的子字符串?

时间:2010-09-09 07:42:52

标签: php search preg-match substring

我试图创建一个函数来检查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 个答案:

答案 0 :(得分:5)

$pattern = '/' . preg_quote($substring, '/') . '/';

这为你逃脱了特殊的角色。也传递'/',因此它也会被转义,因为你将它用作分隔符。

另一件事,修复了if条件中的一些拼写错误:

if (preg_match($pattern, $string)) {

答案 1 :(得分:4)

您有什么理由要使用preg_match吗?它必须是正则表达式吗?那么strpos()呢?

  

返回haystack字符串中第一次出现needle的数字位置。

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

如果您没有理由使用正则表达式,请不要使用它们。

<强>更新

关于public static的评论:不要为收集函数创建类(看起来你在这里这样做)。那没有意义。只需创建正常的函数并将它们包含在脚本中。使用类来实现真正的OOP 顺便说一句。你应该考虑一个更具表现力的你的功能名称。 stringCheck非常模糊(它会检查什么?)。