2013-11-19 3 views
0

Я понимаю, почему функции mb_ полезны. Но я не уверен, есть ли причина продолжать использовать старые простые строковые функции. Как учитель программирования, мне интересно, просто ли я пропустить их в пользу их многобайтовых версий.Есть ли причина не использовать многобайтовые функции в PHP?

Вопросы, относящиеся:

+0

По крайней мере, вы можете показать разницу между один байт символов ASCII и многобайтными символов. –

+0

Да, когда я учу Python, мы обычно сталкиваемся с проблемами кодирования и обсуждаем строковое представление и прочее. Но это более высокоуровневый практический PHP-класс ... –

+0

Так как PHP не имеет концепции «высокого уровня» строк за пределами * байтовых массивов *, тем более важно обсуждать эти темы в PHP , В, скажем, Javascript вы можете в основном игнорировать тему кодировок, пока не попытаетесь использовать очень высокие кодовые точки. В Python 3 вы можете AFAIK игнорировать кодировки, если вы правильно настроили бутерброд Юникод. В PHP, хотя вы всегда работаете с низкоуровневыми байтами. – deceze

ответ

2

Не все строковые операции переопределены в mb_ функции, например, нет mb_ эквивалентно str_replace. Причина в том, что это не обязательно, так как str_replace отлично работает на строках любой кодировки, если вы заботитесь о том, чтобы все аргументы были в согласованной кодировке.

Итак, вы не можете просто игнорировать все «старые простые строковые функции» вообще. Вам нужно использовать функции mb_, если вы делаете что-то, что требует кодирования и распознавания символов. Для других целей вы не обязательно.

«Старые простые строковые функции» также полезны, если вы явно пытаетесь работать с байтами, а не с символами. Например, вы можете использовать substr для проверки наличия BOM:

if (substr($str, 0, 3) == "\xEF\xBB\xBF") 
+0

Мне не нужно игнорировать функции non-mb, но я (в основном) могу, правильно? –

+0

Вам нужно знать, что делает каждая функция в точности и когда ее использовать. Я не скажу вам, что вы можете игнорировать их. – deceze

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