我试图创建一个函数来检查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,但遇到符号问题。
谢谢=]
答案 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
非常模糊(它会检查什么?)。