PHP中的几个文本处理函数

在Sourceforge上下载了一个名字叫Simple PHP Forum的论坛程序,学了几个文本处理函数。结果试着用刚刚学的东西写了一个简单的留言板,发现了中文乱码问题,解决后感觉又学到了不少新东西。这几个文本函数是:

  • string htmlentities ( string $string [, int $quote_style [, string $charset]] ):将$string中的特殊字符转换成HTML字符。所谓“特殊字符”是诸如“<”、“>”这些被HTML所使用的字符。如果不加转换直接输出到浏览器上,页面就不会显示这些字符或者发生错误。htmlentities将其转换成&lt、&gt等等。在用表单提交文本之前勿必先用它处理一下。
    <? php
    $str   =   " A 'quote' is <b>bold</b> " ;

    //  Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
    echo   htmlentities ( $str );

    //  Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
    echo   htmlentities ( $str ,  ENT_QUOTES);
    ?>
  • string nl2br ( string $string ):将$string里的换行符(/n)转换成“<br />”,同样是为了在浏览器中能够正确地显示。这也是在留言本、论坛程序里经常用到的函数。
  • string mysql_escape_string ( string $unescaped_string ):将$unescaped_string转换成可以用mysql_query()查询的字符串。别外,这也是避免非法SQL语句的一个简单方法。举个例子:
    <? php
        
    $item   =   " Zak's Laptop " ;
        
    $escaped_item   =   mysql_escape_string ( $item );
        
    printf ( " %s " , $escaped_item );  // 输出:Zak's Laptop
    ?>

值得注意的是htmlentities默认情况下(即省略后两个可选参数)不能正确处理中文,中文全成乱码了。一开始我还以为是MySQL的问题,试了很多种方法都不起作用,最后终于将目光锁在了htmlentities上。要让它能正确处理中文,需要通过第三个参数指定字符编码。例如使用UTF-8编码,需要写成:htmlentities($string,ENT_QUOTES,"UTF-8")。可选的字符集见http://au.php.net/manual/zh/function.htmlentities.php

htmlentities的第二个参数指定对引号的转换方式,用三个选项(常量):

  • ENT_COMPAT:转换双引号,忽略单引号;
  • ENT_QUOTES:转换双引号和单引号;
  • ENT_NOQUOTES:忽略双引号和单引号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值