Andy's Blog » » PHP全角标点转为半角

PHP全角标点转为半角

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 代码求值,并用其结果来替换所搜索的字符串。

Incoming search terms:

Tags: PHP, 全角, 半角

本文地址: http://blog.21andy.com/20080508/1101.html

2 评论 to “PHP开源CMS之MODx”

  1. 笑三少 于 2008-07-28 15:52:28 发表:

    很好很强大

  2. cc 于 2009-01-05 10:49:35 发表:

    用你的代码测试了下,如果php文件用utf-8编码的话这个函数就无效了