如何从字符串中删除 'em' 破折号?
How to remove 'em' dash from a string?
我看过其他解决方案here and here,但它对我不起作用。
代码
$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('–', ENT_COMPAT, 'UTF-8');
$s1clean = str_replace($em_dash, '', $s1clean);
$em_dash2 = html_entity_decode('—', ENT_COMPAT, 'UTF-8');
$s1clean = str_replace($em_dash2, '', $s1clean);
$s1clean = str_replace('\u2014', '', $s1clean);
echo $s1clean;
echo "<br><br>";
输出
"ALIEN FILM MOVIE – PSP – Sony Boxed & Complete"
如何删除这个字符?
这指定了一组可能的删除,
$s1clean = 'ALIEN - FILM - MOVIE – PSP – Sony - Boxed & Complete';
$s1clean = str_replace(["-", "–"], '', $s1clean);
echo $s1clean;
当运行,
输出
外星人电影 PSP 索尼盒装完整
我简单地复制了 奇怪的破折号 并添加了实际破折号的可能性并且它起作用了。
阅读Material
您的破折号是长破折号 –
和 hypen-minus(短破折号)的混合体 -
- 如果您以不同的字体查看您的代码和标题,您将看到差异。
您的代码删除了开头的 2 个短破折号,后面的一些长破折号没有删除。
添加这个将修复它(这是一个不同的破折号,即使它看起来不像一个破折号):
$s1clean = str_replace('–', '', $s1clean);
编辑
或者复制 2013 代码行,但使用 hyphen-minus's code 002D
而不是 2013:
$em_dash = html_entity_decode('-', ENT_COMPAT, 'UTF-8');
如果您使用固定宽度的字体进行编辑,两者看起来相同,但实际上并非如此。
以上对我不起作用,但这个对我有用:
$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
这个适合我
$title = "Hunting, Tactical & Outdoor Optics eCommerce Store ΓÇô 5,000 ΓÇö SOLD";
$title = str_replace(html_entity_decode('–', ENT_COMPAT, 'UTF-8'), '-', $title);
$title = str_replace(html_entity_decode('—', ENT_COMPAT, 'UTF-8'), '-', $title);
我看过其他解决方案here and here,但它对我不起作用。
代码
$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('–', ENT_COMPAT, 'UTF-8');
$s1clean = str_replace($em_dash, '', $s1clean);
$em_dash2 = html_entity_decode('—', ENT_COMPAT, 'UTF-8');
$s1clean = str_replace($em_dash2, '', $s1clean);
$s1clean = str_replace('\u2014', '', $s1clean);
echo $s1clean;
echo "<br><br>";
输出
"ALIEN FILM MOVIE – PSP – Sony Boxed & Complete"
如何删除这个字符?
这指定了一组可能的删除,
$s1clean = 'ALIEN - FILM - MOVIE – PSP – Sony - Boxed & Complete';
$s1clean = str_replace(["-", "–"], '', $s1clean);
echo $s1clean;
当运行,
输出
外星人电影 PSP 索尼盒装完整
我简单地复制了 奇怪的破折号 并添加了实际破折号的可能性并且它起作用了。
阅读Material
您的破折号是长破折号 –
和 hypen-minus(短破折号)的混合体 -
- 如果您以不同的字体查看您的代码和标题,您将看到差异。
您的代码删除了开头的 2 个短破折号,后面的一些长破折号没有删除。
添加这个将修复它(这是一个不同的破折号,即使它看起来不像一个破折号):
$s1clean = str_replace('–', '', $s1clean);
编辑
或者复制 2013 代码行,但使用 hyphen-minus's code 002D
而不是 2013:
$em_dash = html_entity_decode('-', ENT_COMPAT, 'UTF-8');
如果您使用固定宽度的字体进行编辑,两者看起来相同,但实际上并非如此。
以上对我不起作用,但这个对我有用:
$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
这个适合我
$title = "Hunting, Tactical & Outdoor Optics eCommerce Store ΓÇô 5,000 ΓÇö SOLD";
$title = str_replace(html_entity_decode('–', ENT_COMPAT, 'UTF-8'), '-', $title);
$title = str_replace(html_entity_decode('—', ENT_COMPAT, 'UTF-8'), '-', $title);