php trim函数处理中文乱码case
先看case
<?php
// case1. 删除前后括号
$strOldLemmaDesc = "())武器()大师(()";
$strNewLemmaDesc = preg_replace('/^[()()]+|[()()]+$/u', '', $strOldLemmaDesc);
$strNewLemmaDesc2 = trim($strOldLemmaDesc, '()()' ); //badcase
var_dump($strNewLemmaDesc, $strNewLemmaDesc2);
以上输出:
string(16) "武器()大师"
string(15) "武器()大帢
// case2.删除末尾句号
$strOldLemmaDesc = "骗局。";
$strNewLemmaDesc = preg_replace('/。+$/u', '', $strOldLemmaDesc);
$strNewLemmaDesc2 = rtrim($strOldLemmaDesc, '。' ); //badcase
var_dump($strNewLemmaDesc, $strNewLemmaDesc2);
以上输出:
string(6) "骗局"
string(5) "骗屢
// case3.删除末尾中英文句号、冒号
$strOldCata = "导言.";
$strNewCata = preg_replace('/[.:。:]+$/u', '', $strOldCata);
$strNewCata2 = rtrim($strOldCata, '.:。:');//badcase
var_dump($strNewCata, $strNewCata2);
以上输出:
string(6) "导言"
string(5) "导訢
总结
trim(ltrim、rtrim)函数默认只能删除 ASCII (单字节匹配)码中的字符,而不能删除 Unicode 字符,因此在处理非 ASCII 字符时需要格外注意。这里使用了 preg_replace() 函数,通过正则表达式匹配字符(或是字符集合),再将其替换为空字符串,从而达到删除特定字符的效果。注意正则表达式末尾的 'u' 标志用于表示匹配 Unicode 字符集。
综上,这种类似的处理含中文字符串操作建议使用正则函数(preg_replace)匹配和删除。

浙公网安备 33010602011771号