我想用常規破折號替換這個字符http://www.fileformat.info/info/unicode/char/2014/index.htm ,這是我還沒有得到它的工作?PHP替換EM破折號REGEX
$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 ,這是我還沒有得到它的工作?PHP替換EM破折號REGEX
$dataold = "9am – 5pm"; // from a ms word doc
$data = mb_ereg_replace("[\xE2 \x80 \x94]", " - ", $dataold);
print_r($data);
爲什麼與八進制Unicode格式煩惱呢?爲什麼不......
更換一個N短跑
$dataold = "9am – 5pm"; // from a ms word doc
$data = mb_ereg_replace(" – ", " - ", $dataold);
print_r($data);
更換的M-短跑
$dataold = "9am — 5pm"; // from a ms word doc
$data = mb_ereg_replace(" — ", " - ", $dataold);
print_r($data);
你原來的代碼工作正常,但在樣品文本字符串有N-dash,你正在測試M-dash。 (你在RegEx中有額外的空間)。試試這個...
$dataold = "9am — 5pm"; // from a ms word doc
$data = mb_ereg_replace("[\xE2\x80\x94]", " - ", $dataold);
print_r($data);
因爲如果字符串中有任何unicode字符,它將很難保持。使用正確的代碼會更清楚。 :) – yacc
我得到它的工作,但 - 字符直接從您粘貼的頁面複製(從您的代碼複製不起作用)。
<?php
$dataold = "9am — 5pm"; // from a ms word doc
$data = mb_ereg_replace("\x{2014}", "dash", $dataold);
print_r($data); // output = 9am dash 5pm
這不起作用。 – JBH
問題:您的示例代碼具有 「N」 破折號。你要求一個「M」短跑。只要您刪除RegEx中的空白,您使用的代碼對於「M」破折號就可以正常工作。 – JBH
你只是想把所有破折號歸一化爲一個'space-space'?我想你可能只是使用'preg_replace('〜\ p {Pd}〜u',' - ',$ s)'。否則,對於EN-DASH,只需使用'str_replace(' - ',' - ',$ s)'對於EM-DASH和'str_replace(' - ',' - ',$ s)''。 –