5

重複の可能性:
文字列の � を置き換える方法

データベースから出てくる XML シートからデータを読み取っています。生の出力では、「�」を意味する UTF-8 文字列であるこの文字「�」に出くわします。"�" や "�" を検索する場合、str_replace で単純な検索と削除を行うだけではうまくいきません。この文字を文字列から削除する他の方法はありますか?

アップデート:

参考までに、これは私のために文字列をクリーンアップしている関数です。

    function db_utf8_convert($str)
{
    $convmap = array(0x80, 0x10ffff, 0, 0xffffff);
    return preg_replace('/\x{EF}\x{BF}\x{BD}/u', '', mb_encode_numericentity($str, $convmap, "UTF-8"));
}
4

2 に答える 2

3

あなたはこれを行うことができます:

$str = 'UTF-8 string meaning "�"';
echo preg_replace('/\x{EF}\x{BF}\x{BD}/u', '', iconv(mb_detect_encoding($str), 'UTF-8', $str));

出力: UTF-8 string meaning ""

于 2012-12-27T20:21:10.887 に答える
2

これに似たことができます:

<?php
$string = "asd fsa fsaf sf � asdfasdfs";

echo preg_replace("/[^\p{Latin} ]/u", "", $string);

より多くの文字の一致については、このスクリプトを確認してください:
http://www.regular-expressions.info/unicode.html#script

編集

私はこれを見つけました、人々はそれがうまくいくと言っています、あなたはそれを試すことができます:

<?php
function removeBOM($str=""){
    if(substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {
        $str=substr($str, 3);
    }
    return $str;
}
?>
于 2012-12-27T20:06:09.420 に答える