我真的一直在绞尽脑汁,至于我的生活,我无法弄清问题是什么。
我有一些数据要运行正则表达式。作为参考,原始文档以iso-8859-15编码,如果这有任何区别。
这是一个使用正则表达式的函数;
if(preg_match("{£\d+\.\d+}", $handle)) //
{
echo 'Found a match';
}
else
{
echo 'No match found';
}
无论我尝试什么,我似乎无法让它匹配。我试过寻找£符号。我已经超越了我的正则表达式,那里没有任何问题。我甚至将源数据直接粘贴到正则表达式测试器中,它找到了我正在寻找的完全匹配。我只是不明白为什么我的正则表达式不起作用。我查看了我正在搜索的字符串中的原始数据,并且£符号就像那天一样清晰。
我觉得那里有一些我看不到的编码字符,但无论我输出的数据是什么,我都能看到的是£符号,但无论出于什么原因它都没有被识别。
有什么想法吗?是否有绝对的方法来查看字符串中的原始数据?我已经尝试了var_dump和var_export,但我确实觉得有些东西不太正确,因为var_export确实以不同的语言显示数据。如何才能看到变量中的“真正”?
我甚至将内容保存到txt文件中。 £在那里。应该没有理由我不能用我的正则表达式找到它。我只是不明白。如果我创建一个字符串并粘贴到我的正则表达式应该选择的测试的确切位,它会发现匹配没有任何问题。
真是莫名其妙。
答案 0 :(得分:4)
你总是可以改变这封信:
$string = '£100.00';
if(preg_match("/\xa3/",$string)){
echo 'match found';
}else{
echo 'no matches';
}
答案 1 :(得分:2)
如果您知道十六进制值,则可以在正则表达式中包含任何字符。我认为值是0A3H,所以试试这个:
\xa3 // Updated with the correct hex value