采集到的内容有很多空格,想要去掉不必要的空格
$tmp = preg_replace("/\s/is",'',$desc->textContent); var_dump($tmp);//string(47) "?书???名:?计算机集成制?(原书第3版)"
正则替换不可见字符之后乱码,为什么会这样,我还不知道,只能换一个思路了。
使用str_replace
,有些空格还是替换不掉,测试如下
$tmp = str_replace(" ","",$desc->textContent); var_dump($tmp);
string(37) "书名:嵌入式系统设计与实践" string(18) "图书定价:69元" string(24) "作者:(美)Elecia White" string(31) "出版社:机械工业出版社" string(23) "出版日期:2013-05-01" string(21) "ISBN号:9787111415848" string(12) "开本:16开" string(10) "页数:282" string(10) "版次:1-1" string(43) " 书名: 普适计算及其商务应用 " string(24) " 图书定价: 45元 " string(27) " 作者: (美)Bo Begole " string(37) " 出版社: 机械工业出版社 " string(29) " 出版日期: 2012-04-01 " string(27) " ISBN号: 9787111375753 " string(18) " 开本: 16开 "
有些空格,使用trim
能干掉,但是和上面str_replace
一样,有时候也会失效。既然这样,我只能把每个字符都打印出来,看看其ascii
码到底是多少。
function delEmptyChars($str){ $length = mb_strlen($str,'utf-8'); $return = ""; for ($i=0; $i < $length; $i++) { $_tmpStr = mb_substr($str,$i,1,'utf-8'); // echo $i."\t".$_tmpStr."\t".ord($_tmpStr)."\n"; $ascii = ord($_tmpStr); if($ascii < 33 || ($ascii > 174 && $ascii < 224)){ continue; } $return .= $_tmpStr; } return $return; }
还个笨办法也是一直用来处理非utf8mb4
数据库存储emoji表情的思路。