0
4

3 回答 3

0

你应该改变

$columnarray[$i] = str_replace("‘", "", $columnarray[$i]);

$columnarray[$i] = str_replace("'", "", $columnarray[$i]);
于 2013-10-23T13:36:31.307 回答
0

撇号是数字排版最大的痛点之一,基本上就是这个原因。有两个常见的变体(印刷 = 卷曲,打字机 = 直),你设法在你的问题中使用了这两个变体,每个变体中的两个(左和右),以及至少三个看起来相似的字符,通常误用在撇号的位置(素数、冲绳、坟墓)。在维基百科或无数打字爱好者网站上阅读更多信息。

最简单的解决方案是利用传递str_replace值数组的能力来查找:

$apostrophes = array(
    "curly-left" => "‘",
    "curly-right" => "’",
    "straight-left" => "'",
    "straight-right" => "'",
    "prime" => "′",
    "okina" => "ʻ",
    "grave" => "`"
    );

$columnarray[$i] = str_replace($apostrophes, "", $columnarray[$i]);
于 2013-10-23T14:38:01.973 回答
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])并查看代码是什么并在上面的代码中替换。

于 2013-10-23T13:49:27.710 回答