我想替换’
例如PHP中的KPI’s
和“”。我从阵列中得到它。
echo "before:".$columnarray[$i]."<br/>";
$columnarray[$i] = str_replace("‘", "", $columnarray[$i]);
echo "after:".$columnarray[$i]."<br/>";
我在这个主页http://sonderzeichentabelle.de/中尝试了12个不同的特殊字符......但没有任何效果。
我做错了什么?
答案 0 :(得分:0)
你应该改变
$columnarray[$i] = str_replace("‘", "", $columnarray[$i]);
到
$columnarray[$i] = str_replace("'", "", $columnarray[$i]);
答案 1 :(得分:0)
您的str_replace
正在寻找文字‘
,而不是它所代表的字符,这就是为什么它没有被替换的原因。您需要将其转换为角色并使用它。我相信您要使用chr()
您可以使用ord()
您需要使用ord()来确定代码是什么。您也可以使用html_entity_decode
,因为您的角色不是Ascii代码。
$character = html_entity_decode('‘', ENT_COMPAT, 'utf-8');
str_replace($character, "", $columnarray[$i]);
找到正确的代码转储html_entity_decode($columnarray[$i])
并查看代码是什么,并在上面的代码中替换。
答案 2 :(得分:0)
撇号是biggest pains of digital typography中的一个,基本上是出于这个原因。有两个常见的变体(印刷品=卷曲,打字机=笔直),你设法在你的问题中使用这两个变体,并且每个变体中的两个变体(左和右),以及至少三个相似的看起来很常见的字符在撇号(素数,冲绳,坟墓)的地方滥用。在维基百科或无数的喜剧爱好者网站上阅读更多内容。
最简单的解决方案是利用传递str_replace
一组值来查找的能力:
$apostrophes = array(
"curly-left" => "‘",
"curly-right" => "’",
"straight-left" => "'",
"straight-right" => "'",
"prime" => "′",
"okina" => "ʻ",
"grave" => "`"
);
$columnarray[$i] = str_replace($apostrophes, "", $columnarray[$i]);