Как работает взрыв?

1

Почему я получаю 2 разных результата в этом очень простом скрипте:

$str = "114004301000301000301000";
echo $str."<br/ >"; //Prints 114004Â301000Â301000Â301000Â
$test1 = (explode("",$str));
print_r($test1); //Prints Array ( [0] => 114004 [1] => 301000 [2] => 301000 [3] => 301000 [4] => ) 

echo "<br /><br />";

$blah = $data['final_alle_produktid']; // Contains a string called 114004301000301000301000
$test1 = (explode("",$blah));
print_r($test1); //Prints Array ( [0] => 114004301000301000301000 ) 

Я не понимаю, почему второй взрыв не будет разделять строку только потому, что я возник из запроса mysql.

Изменить: я не могу даже использовать str_replace в этом примере:

$blah = str_replace(""," ",$data['final_alle_produktid']); 
echo $blah."<br/ >"; //Still prints 114004301000301000301000

Без разницы. utf8_decode ничего не меняет. Даже если я сохраню его в переменной, например, например:

$test = $data['final_alle_produktid'];
$blah = str_replace(""," ",$test); 
echo $blah."<br/ >"; //Still prints 114004301000301000301000

Edit2:

print_r($blah); //Prints 114004301000301000301000

Редактировать 3

Нет решения. Не имел никакого отношения к пределу. Если я обмениваюсь с B, тогда все работает.

Решение:

Я должен был включить правильное кодирование (я просто добавил стандартные заголовки и кодировку html).

  • 3
    Кодировка вашего исходного кода и строки, полученной из mysql, идентичны?
  • 1
    Можете ли вы print_r ($ бла)?
Показать ещё 3 комментария
Теги:
string
split
explode

1 ответ

2

Это не работает, потому что кодировки отличаются. "" в вашем исходном коде представляется с использованием разных байтов, чем строка, которую вы получаете от MySQL, поэтому они не соответствуют и не explode, не находит подстроку, чтобы взорваться. Вам необходимо убедиться, что вы используете ту же самую кодировку, или конвертируете кодировки по мере необходимости.

Смотрите, что каждый программист абсолютно, положительно должен знать о кодировках и наборах символов для работы с текстом и UTF-8 на всем протяжении.

  • 0
    Извините, не реальное решение.
  • 0
    Мой или твой? По-прежнему выглядит очевидной проблемой кодирования, а это означает, что вы должны изучать кодировки.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню