PHP全角标点转为半角

<?php   
$str = "0123ABCDFWS\",.?<>{}[]*&^%#@!~()+-|:;";   
echo "$str";   
echo "<br />";   
$str = preg_replace('/\xa3([\xa1-\xfe])/e', 'chr(ord(\1)-0x80)', $str);   
echo $str;   
?>

这是网上看来的代码,最初我想着,反正标点就那么多,直接用数组啥的替换一下就完事了。看了这个函数之后,发现自己了解的太少了。或者说自己的思路太狭隘了,从没有往深处这么想。看来所有的中文标点的第二个字节减去0X80(即128)所得的数字就是半角所得的数字了。而/e模式表达的是:如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串

你可能感兴趣的:(PHP全角标点转为半角)