Вот код PHP:
var_dump($value);
string(103) "0e0cU\0Z‚dddd.is.moar.awesome‚A6A32C2074B787893DF506F6F466F5919516C44F3"
var_dump(explode(',', $value));
array (1) { [0] => строка (103) "0e0cU \ 0Z, dddd.is.moar.awesome,A6A32C2074B787893DF506F6F466F5919516C44F3" }
Почему строка не разделяется запятой?
Поскольку символ в строке, которую вы пытаетесь explode()
, не является запятой – ну, а не запятой ASCII:, (точка десятичного кода 44
) . Запятая в строке является символом Юникода «ОДИНОЧНАЯ МАТРИЦА ЦИФРОВОГО НИЗКАЯ-9» (десятичная кодовая точка 8218
).
Попробуйте это в консоли JavaScript:
> '‚' === ',' false
После большого исследования реальной проблемой было то, что входная строка была в кодировке Windows-1252. Поэтому попытка заменить U + 201A не работала, пока я не преобразовал ее в unicode.