preg_match不工作

时间:2011-10-20 19:03:03

标签: php regex preg-match

我正在尝试匹配某些文字中的某些链接:

$reg = '#ok is it http://google.com/?s=us#';
$page = 'Well i think ! ok is it http://google.com/?s=us&ui=pl0 anyways it ok';

if(preg_match($reg,$page)){
  echo 'it work'; 
}else{
  echo 'not work';
}

现在的问题是,如果我使用$reg = '#ok is it http://google.com/';那么它可以,但是当我使用那个“?=”时它不会。

好的!我知道有一些语法错误的问题是否有任何函数或现成的函数自动转义这些特殊字符?

3 个答案:

答案 0 :(得分:3)

你有很多语法错误。你必须将所有特殊字符转义为'。','?'等等。因此你必须替换这样的字符:

'.' -> '\.'
'?' -> '\?'
...

无论如何,正则表达式应该是这样的:

$reg = '#ok is it http:\/\/google\.com/\?s=us#';

答案 1 :(得分:0)

使用:

$reg = '#ok is it http://google.com/\?s=us#';

答案 2 :(得分:0)

一些字符被REGEX引擎读作元字符,这意味着它们在引擎的过程中有一个特殊的功能,一些例子是? (问号),\(斜线),. (期间),*(星号)等。

与使用包含元字符的SQL一起发送的字符串一样,您需要通过添加尾部斜杠手动转义这些字符: \。当转义\字符时,您可能需要转义这样三到四次:\\\或\\\\。