我需要讀取一組文本文件並獲取內容,並且此部分成功。問題是內容包括的一些擴展ACII字符,我用下面的過濾這些字符:只需要過濾擴展的ASCII字符,如Ä,å,à等
$contents = preg_replace('/[^(\x20-\x7F)]*/','', $contents);
這將刪除所有擴展ASCII字符加上所需的字符,例如撇號,報價等
如何我應該更改preg_replace來執行此操作嗎?
我需要讀取一組文本文件並獲取內容,並且此部分成功。問題是內容包括的一些擴展ACII字符,我用下面的過濾這些字符:只需要過濾擴展的ASCII字符,如Ä,å,à等
$contents = preg_replace('/[^(\x20-\x7F)]*/','', $contents);
這將刪除所有擴展ASCII字符加上所需的字符,例如撇號,報價等
如何我應該更改preg_replace來執行此操作嗎?
問題不在於您正在過濾的範圍內的ascii '
或"
。問題很可能是Windows智能報價。過濾那些運行在你的更換,你就會有更多的快樂;)
<?php
function convert_smart_quotes($string)
{
$search = array(chr(145),
chr(146),
chr(147),
chr(148),
chr(151));
$replace = array("'",
"'",
'"',
'"',
'-');
return str_replace($search, $replace, $string);
}
$contents = convert_smart_quotes($contents);
$contents = preg_replace('/[^(\x20-\x7F)]*/','', $contents);
var_dump($contents);
?>
我剛剛注意到,當我第一次給出以下兩行,然後給出ASCII的preg_replace時,內容完全正常,但有1000個文本文件,我無法確定其他文本文件是否相同。 – 2011-12-23 17:57:24
$ contents = str_replace('',「’」,$ contents); $ contents = str_replace('',「–」,$ contents); $ contents = preg_replace('/ [^(\ x20- \ x7F)] * /','',$ contents); – 2011-12-23 17:58:03
感謝大家,非常感謝!問題是我所有的文本文件都是unicode,一旦我將它們轉換爲utf-8,就沒有任何擴展的ASCII字符。 – 2011-12-30 16:53:58
你已經張貼什麼不會刪除引號和撇號。你可以包括一些正在編輯的文本嗎? – 2011-12-23 16:30:35
例如:你去上學。應該是「你會去學校」 – 2011-12-23 16:45:08
你不是說:「你去上學嗎?」它爲我工作。你確定「撇號」不是一些看起來像撇號的其他角色嗎? – 2011-12-23 16:45:46