php ile utf-8 rakam boşlukları kaldırmak

2 Cevap php

I have some xml files with figure spaces in it, I need to remove those with php. The utf-8 code for these is e2 80 a9. If I'm not mistaken php does not seem to like 6 byte utf-8 chars, so far at least I'm unable to find a way to delete the figure spaces with functions like preg_replace.

Herkes herhangi bir ipucu ya da bu soruna daha iyi bir çözüm?

2 Cevap

Eğer çalıştı preg_replace('/\x{2007}/u', '', $stringWithFigureSpaces);? Var

U+2007 FIGURE SPACE için unicode codepoint olduğunu.

\x{FFFF}-sözdizimi hakkında bilgi içerir PHP ile benzer bir unicode-regex konuyla ilgili my answer bakın.

Eğer olmayan çalışma hakkında comment ilgili - benim makinede mükemmel aşağıdaki işler:

$ php -a
Interactive shell

php > $str = "a\xe2\x80\x87b";  // \xe2\x80\x87 is the FIGURE SPACE
php > echo preg_replace('/\x{2007}/u', '_', $str); // \x{2007} is the PCRE unicode codepoint notation for the U+2007 codepoint
a_b

Eğer PHP versiyonu nedir? Eğer karakter FIGURE SPACE Tüm olduğuna emin misin? Eğer dize aşağıdaki parçasını çalıştırabilir miyim?

for ($i = 0; $i < strlen($str); $i++) {
    printf('%x ', ord($str[$i]));
}

Benim test dize bu çıkışlar

61 e2 80 87 62
a  |U+2007|  b

EDIT OP Yorumlarınız sonra:

\xe2\x80\xa9 bir PARAGRAPH SEPARATOR which is unicode codepoint U+2029, böylece kodu olmalıdır preg_replace('/\x{2029}/u', '', $stringWithUglyCharacter); olduğunu

Belki mb_convert_encoding fonksiyon yardımcı olabilir.