我试图用一个普通的破折号来替换这个字符 http://www.fileformat.info/info/unicode/char/2014/index.htm,但是我似乎无法使它工作?
$dataold = "9am – 5pm"; // from a ms word doc
$data = mb_ereg_replace("[\xE2 \x80 \x94]", " - ", $dataold);
print_r($data);
我试图用一个普通的破折号来替换这个字符 http://www.fileformat.info/info/unicode/char/2014/index.htm,但是我似乎无法使它工作?
$dataold = "9am – 5pm"; // from a ms word doc
$data = mb_ereg_replace("[\xE2 \x80 \x94]", " - ", $dataold);
print_r($data);
为什么要使用八进制Unicode格式?为什么不直接使用十六进制格式或字符实体呢?
替换破折号
$dataold = "9am – 5pm"; // from a ms word doc
$data = mb_ereg_replace(" – ", " - ", $dataold);
print_r($data);
替换破折号
$dataold = "9am — 5pm"; // from a ms word doc
$data = mb_ereg_replace(" — ", " - ", $dataold);
print_r($data);
你的原始代码基本正常,除了样例文本字符串中有一个N-dash,而你却在测试M-dash。此外,你的正则表达式中还有额外的空格。请尝试这个...
$dataold = "9am — 5pm"; // from a ms word doc
$data = mb_ereg_replace("[\xE2\x80\x94]", " - ", $dataold);
print_r($data);
试试这个:
$dataold = "9am – 5pm"; // from a ms word doc
$data = mb_ereg_replace("/ \\x{2014} /u", " - ", $dataold);
print_r($data);
<?php
$dataold = "9am — 5pm"; // from a ms word doc
$data = mb_ereg_replace("\x{2014}", "dash", $dataold);
print_r($data); // output = 9am dash 5pm
preg_replace('~\p{Pd}~u', ' - ', $s)
。否则,只需使用str_replace('—', ' - ', $s)
替换 EM-DASH 和str_replace('–', ' - ', $s)
替换 EN-DASH。 - Wiktor Stribiżew