2014-11-07 2 views
0

У меня есть очень странный вопрос - я включил текстовый файл для извлечения переменных из, и это происходит:Удаление кодировки в строке

var_dump($kw); 
returns: 
string(19) "fut coins" 

echo "keyword $kw"; 
returns: 
keyword: 0f0i0f0a0 0c0o0i0n0s0 

Есть в любом случае, чтобы удалить эту кодировку 0 'из строки ?

+1

Это выглядит действительно странно, не могли бы вы показать нам hexdump этой строки? (См: bin2hex) – tkausl

+0

bin2hex показывает: 00630061007200720065006c006100670065002000730061006c006c00650020006400650020006200610069006e00 – Kevin

+0

Это выглядит как UTF-16, но тогда это будет строка «CARRELAGE Саль де Бэйн» и я не понимаю, почему это заканчивается «00», так вот только «половинку "символа. – tkausl

ответ

0

В этом примере (предполагая, что вам просто нужно избавиться от нулей) По вашему кодирующим примере выше, фактическая 0 символ будет отображаться в виде двух последовательных нулей, поэтому сначала закодировать его в какой-то специальной строки, затем декодирует после удаления всех ненужные нули.

$kw = str_replace('00', ';;;zero;;;', $kw); 
$kw = str_replace('0', '', $kw); 
$kw = str_replace(';;;zero;;;', '0', $kw); 

Это должно сработать. Тем не менее, это своего рода быстрое и грязное решение вашей проблемы.

Тот факт, что ваша строка поступает в вашу программу с каждым символом, заполненным нулями, является нечетным, и исправление этой проблемы в ее источнике было бы идеальным решением.

+0

Как я могу обойти это, если в строке есть 0. Какова основная проблема этого? – Kevin

+0

OK Я немного отредактировал свой ответ, теперь следует рассмотреть возможность того, что ваша строка содержит аутентичные символы «0» – Manmaru

Смежные вопросы