如何从字符串中删除'em'破折号?

时间:2015-08-14 22:06:14

标签: php str-replace

我查看过其他解决方案herehere,但这对我不起作用。

代码

$s1clean = 'ALIEN - FILM - MOVIE – PSP – Sony - Boxed & Complete';
echo $s1clean;
echo "<br><br>";

// Remove dash
$s1clean = str_replace('-', '', $s1clean);

// Remove em dash
$em_dash = html_entity_decode('&#x2013;', ENT_COMPAT, 'UTF-8');
$s1clean = str_replace($em_dash, '', $s1clean);

$em_dash2 = html_entity_decode('&#8212;', ENT_COMPAT, 'UTF-8');
$s1clean = str_replace($em_dash2, '', $s1clean);

$s1clean = str_replace('\u2014', '', $s1clean);

echo $s1clean;
echo "<br><br>";

输出

“ALIEN FILM MOVIE - PSP - 索尼盒装和完整”

如何删除此字符?

4 个答案:

答案 0 :(得分:10)

这指定了可能的删除数组

$s1clean = 'ALIEN - FILM - MOVIE – PSP – Sony - Boxed & Complete';

$s1clean = str_replace(["-", "–"], '', $s1clean);

echo $s1clean;

跑步时,

<强>输出继电器

ALIEN FILM MOVIE PSP Sony Boxed&amp;完整

我只是简单地复制了奇怪的破折号并添加了实际破折号的可能性并且它有效。

阅读材料

str_replace

答案 1 :(得分:4)

上述内容对我没有用,但确实如此:

$s1clean = str_replace(chr(151), '', $s1clean); // emdash

注意:使用endash

$s1clean = str_replace(chr(150), '', $s1clean); // endash
来自周杰伦:http://php.net/manual/en/function.str-replace.php#102465

答案 2 :(得分:2)

你的破折号是长短划线和超短减(短划线)-的混合 - 如果您以不同的字体查看代码和标题,您将看到差异。

您的代码在开始时会删除2个短破折号,以及稍后删除的短破折号。

添加它会修复它(这是一个不同的破折号,即使它看起来不像一个):

$s1clean = str_replace('–', '', $s1clean);

修改

或者复制2013年代码行,但使用hyphen-minus's code 002D代替2013:

 $em_dash = html_entity_decode('&#x002D;', ENT_COMPAT, 'UTF-8'); 

如果以固定宽度字体编辑,则两者看起来都相同,但不是。

答案 3 :(得分:1)

这个适用于我

$title = "Hunting, Tactical & Outdoor Optics eCommerce Store ΓÇô $595,000 ΓÇö SOLD";
$title = str_replace(html_entity_decode('&ndash;', ENT_COMPAT, 'UTF-8'), '-', $title);
$title = str_replace(html_entity_decode('&mdash;', ENT_COMPAT, 'UTF-8'), '-', $title);