我正在尝试匹配某些文字中的某些链接:
$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/';
那么它可以,但是当我使用那个“?=”时它不会。
答案 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一起发送的字符串一样,您需要通过添加尾部斜杠手动转义这些字符: \。当转义\字符时,您可能需要转义这样三到四次:\\\或\\\\。