微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP:preg_match;无法匹配£符号

我真的在这个问题上绞尽脑汁,至于我的生活,我无法弄清问题是什么.

我有一些数据要运行正则表达式.作为参考,原始文档以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文件. £在那里.应该没有理由我不能用我的正则表达式找到它.我只是不明白.如果我创建一个字符串并粘贴到我的正则表达式应该拾取的测试的确切位,它会发现匹配没有任何问题.

真是莫名其妙.

解决方法:

你总是可以改变这封信:

$string = '£100.00';
if(preg_match("/\xa3/",$string)){
    echo 'match found';
}else{
    echo 'no matches';
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐