“解析错误:无效的数字文字” php chr 039

时间:2018-07-27 08:50:31

标签: php str-replace chr

我正在尝试将奇怪的单个语音标记转换为php中的普通语音标记。

$str = str_replace(chr(039), "'", $str);

我发现它是来自许多来源的代码039,包括https://www.atwebresults.com/ascii-codes.php?type=2

但这会导致“解析错误:无效的数字文字”错误。

我的整个功能:

function sanitiseString($str){

$str = str_replace(chr(130), ',', $str);    // baseline single quote
$str = str_replace(chr(132), '"', $str);    // baseline double quote
$str = str_replace(chr(133), '...', $str);  // ellipsis
$str = str_replace(chr(039), "'", $str);    // left single quote                

$str = str_replace(chr(145), "'", $str);    // left single quote
$str = str_replace(chr(146), "'", $str);    // right single quote
$str = str_replace(chr(147), '-', $str);    // double hyphon        
$str = str_replace(chr(150), '-', $str);    // en dash  
$str = str_replace(chr(151), '-', $str);    // em dash  
$str = str_replace(chr(148), '"', $str);    // right double quote                               
$str = str_replace(chr(034), '"', $str);    // weird double speech mark
$str = str_replace(chr(034), '"', $str);    // weird double speech mark

$str = iconv("UTF-8","UTF-8//IGNORE",$str); //ignore everything else unrecognised.

$str = str_replace("’", "'", $str);  
$str = str_replace('“', '"', $str);  
$str = str_replace('”', '"', $str);  

return $str;        
}

2 个答案:

答案 0 :(得分:0)

这是因为在PHP7中如何处理整数,因为以0开头的数字被视为八进制值。 八进制数字每个位置限制为8位数字,范围是0到7。

以前,在PHP5八进制中,包含无效数字的部分被截断了。 示例:将0239视为023。

将数字写为这样的字符串应该可以工作:

$str = str_replace(chr('0039'), "'", $str);

答案 1 :(得分:0)

039octal表示法的无效值,您可以使用前导0对其进行调用。您想要的只是chr(39)0完全没有意义。

话虽如此,str_replace(chr(39), "'", $str)不会做任何事情,因为chr(39)"'"相同。