web-dev-qa-db-ja.com

文字列から「em」ダッシュを削除する方法は?

他の解決策 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 – Sony Boxed&Complete」

このキャラクターを削除するにはどうすればよいですか?

12
user3314053

可能な削除の配列を指定します

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

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

echo $s1clean;

実行すると、

出力

ALIEN FILM MOVIE PSP Sony Boxed&Complete

奇妙なダッシュをコピーして、実際のダッシュの可能性を追加しただけでうまくいきました。

資料を読む

str_replace

11
Script47

上記は私にとってはうまくいきませんでしたが、これはうまくいきました:

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

注:エンドアッシュ用

$s1clean = str_replace(chr(150), '', $s1clean); // endash

ジェイから: http://php.net/manual/en/function.str-replace.php#102465

4
Aba

これは私のために働く

$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);
2
Aminah Nuraini

ダッシュは、長いダッシュとハイフンマイナス(短いダッシュ)-を組み合わせたものです。コードとタイトルを別のフォントで表示すると、違いがわかります。

最初にコードが削除する2つの短いダッシュと、削除しない長いダッシュがいくつかあります。

これを追加すると修正されます(これはダッシュのように見えなくても別のダッシュです):

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

編集

または、2013コード行を複製しますが、2013の代わりに ハイフンマイナスのコード002Dを使用します。

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

固定幅フォントで編集すると、両方が同じように見えますが、同じではありません。

2
Mousey