脚本宝典收集整理的这篇文章主要介绍了如何在PHP中删除特殊引号字符?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
但是,MS Access用于撇号的撇号字符存在问题.它不是单引号,也不是双引号.它是撇号.像这样:
"Rock/Classic 80’s-90’s"
$d = str_replace("’","",$d); $d = str_replace(array("'","\'","\’","’"),$d);
但是,这似乎不起作用.实际上,当基于这些数据运行SQL查询时,它总是似乎以某种方式将’转换为’而不将它们剥离出来,然后导致sql错误,因为它认为字符串已经提前终止.
这是我正在使用的代码块之一:
$band_insert = "INSERT INTO `schedule` (`Band`,`Date`,`Genre`,`Club`,`Location`,`Venue`,`Time`) VALUES ( '%s','%s','%s' )"; $result = $MysqLi->query('TRUNCATE TABLE `schedule`'); if(!$result) die('Truncate error'); if( ($handle=foPEn('./export/schedule.csv','r')) !== FALSE) { while( ($data=fgetcsv($handle,1000,','"','\\')) !== FALSE ) { foreach($data as $d) { $d = str_replace("’",$d); # For debugging purposes only echo "<p>$d</p>"; } $sql = sPRintf($band_insert,$data[0],$data[1],$data[2],$data[3],$data[4],$data[5],$data[6]); #$sql = $MysqLi->real_escape_string($sql); $result = $MysqLi->query($sql); if( ! $result ) $LOG[] = lg("Unable to perform query ($MysqLi->errno): $MysqLi->error"); } $log[] = lg("Successful upload (".date("Y-m-d").")."); fclose($handle); }
问题变成了,为什么这不起作用?当我回显$d值时,会打印出一个?在一个广场上.即使有标题(‘Content-type:text / htML; charset = utf-8’);在文件的顶部.
// First,replace UTF-8 characters. $text = str_replace( array("\xe2\x80\x98","\xe2\x80\x99","\xe2\x80\x9c","\xe2\x80\x9d","\xe2\x80\x93","\xe2\x80\x94","\xe2\x80\xa6"),array("'","'",'-','--','...'),$text); // Next,eITher REPLACE their Windows-1252 equivalents. $text = str_replace( array(chr(145),chr(146),chr(147),chr(148),chr(150),chr(151),chr(133)),$text); // OR,STRIP their Windows-1252 equivalents. $text = str_replace( array(chr(145),array('','',''),$text);
以上是脚本宝典为你收集整理的如何在PHP中删除特殊引号字符?全部内容,希望文章能够帮你解决如何在PHP中删除特殊引号字符?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。