"Parse error: Invalid numeric literal" php chr 039
"Parse error: Invalid numeric literal" php chr 039
我正在尝试将一个奇怪的单一语音标记转换为 php 中的正常语音标记。
$str = str_replace(chr(039), "'", $str);
我从包括 https://www.atwebresults.com/ascii-codes.php?type=2 在内的许多来源发现它是代码 039。
但它会导致 "Parse error: Invalid numeric literal" 错误。
我的全部功能:
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;
}
这是因为 PHP7 处理整数的方式不同,因为以 0 开头的数字被视为八进制值。
八进制数的每个位置限制为 8 位,从 0 到 7。
以前在 PHP5 中包含无效数字的八进制被截断。
例子:0239 被当成了 023。
像这样将数字写成字符串应该可行:
$str = str_replace(chr('0039'), "'", $str);
039
是 octal 表示法的无效值,您使用前导 0
调用它。你想要的只是chr(39)
,0
完全没有意义。
话虽如此,str_replace(chr(39), "'", $str)
不会做任何事情,因为 chr(39)
与 "'"
相同。
我正在尝试将一个奇怪的单一语音标记转换为 php 中的正常语音标记。
$str = str_replace(chr(039), "'", $str);
我从包括 https://www.atwebresults.com/ascii-codes.php?type=2 在内的许多来源发现它是代码 039。
但它会导致 "Parse error: Invalid numeric literal" 错误。
我的全部功能:
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;
}
这是因为 PHP7 处理整数的方式不同,因为以 0 开头的数字被视为八进制值。 八进制数的每个位置限制为 8 位,从 0 到 7。
以前在 PHP5 中包含无效数字的八进制被截断。 例子:0239 被当成了 023。
像这样将数字写成字符串应该可行:
$str = str_replace(chr('0039'), "'", $str);
039
是 octal 表示法的无效值,您使用前导 0
调用它。你想要的只是chr(39)
,0
完全没有意义。
话虽如此,str_replace(chr(39), "'", $str)
不会做任何事情,因为 chr(39)
与 "'"
相同。