なぜ進Unicode形式でわざわざ?なぜ...
あなたの元のコードは、サンプルのテキスト文字列を持っている以外、正常に動作しますM-ダッシュ
$dataold = "9am — 5pm"; // from a ms word doc
$data = mb_ereg_replace(" — ", " - ", $dataold);
print_r($data);
を交換してN-ダッシュに
$dataold = "9am – 5pm"; // from a ms word doc
$data = mb_ereg_replace(" – ", " - ", $dataold);
print_r($data);
を交換していませんNダッシュとあなたはMダッシュをテストしている。 (RegExに余分なスペースがあります)。貼り付けた文字がページから直接コピー(あなたのコードからのコピーは動作しませんでした) - 私はそれが動作しますがしまっ
$dataold = "9am — 5pm"; // from a ms word doc
$data = mb_ereg_replace("[\xE2\x80\x94]", " - ", $dataold);
print_r($data);
出典
2017-08-18 03:53:17
JBH
問題:あなたの例のコードは "N" ダッシュを持っています。あなたは "M"ダッシュを求めています。あなたが使用しているコードは、RegExの空白を削除する限り、「M」のダッシュでうまく動作します。 – JBH
すべてのダッシュを 'space-space'に正規化したいだけですか?私は 'preg_replace( '〜\ p {Pd} ~u'、 ' - '、$ s)'を使うことができると思います。それ以外の場合は、EM-DASHでは 'str_replace( ' - '、 ' - '、$ s)'を、EN-DASHでは 'str_replace( ' - '、 ' - '、$ s)'を使用してください。 –