他の解決策 here と 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;
実行すると、
出力
ALIEN FILM MOVIE PSP Sony Boxed&Complete
奇妙なダッシュをコピーして、実際のダッシュの可能性を追加しただけでうまくいきました。
資料を読む
上記は私にとってはうまくいきませんでしたが、これはうまくいきました:
$s1clean = str_replace(chr(151), '', $s1clean); // emdash
注:エンドアッシュ用
$s1clean = str_replace(chr(150), '', $s1clean); // endash
ジェイから: http://php.net/manual/en/function.str-replace.php#102465
これは私のために働く
$title = "Hunting, Tactical & Outdoor Optics eCommerce Store ΓÇô $595,000 ΓÇö SOLD";
$title = str_replace(html_entity_decode('–', ENT_COMPAT, 'UTF-8'), '-', $title);
$title = str_replace(html_entity_decode('—', ENT_COMPAT, 'UTF-8'), '-', $title);
ダッシュは、長いダッシュ–
とハイフンマイナス(短いダッシュ)-
を組み合わせたものです。コードとタイトルを別のフォントで表示すると、違いがわかります。
最初にコードが削除する2つの短いダッシュと、削除しない長いダッシュがいくつかあります。
これを追加すると修正されます(これはダッシュのように見えなくても別のダッシュです):
$s1clean = str_replace('–', '', $s1clean);
編集
または、2013コード行を複製しますが、2013の代わりに ハイフンマイナスのコード002D
を使用します。
$em_dash = html_entity_decode('-', ENT_COMPAT, 'UTF-8');
固定幅フォントで編集すると、両方が同じように見えますが、同じではありません。