экранировать символ "?" в php - PullRequest
0 голосов
/ 29 апреля 2018

Как мне санировать это в PHP, чтобы извлечение из него подстроки не превратило ее в нестроковую?

// Returns b"—¡ breaks my c" which is not a string
dump(substr('this ? breaks my code', 7, 14));

Я использую Laravel, поэтому, если где-нибудь в Laravel есть функция дезинфекции, я мог бы использовать это.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

substr() работает на уровне байтов, наследие языка программирования C. Если (убедитесь, что это так!) Вы используете UTF-8 в качестве кодировки, один символ может занимать несколько байтов. В этом случае вам следует установить расширение mbstring и использовать вместо него mb_substr().

0 голосов
/ 29 апреля 2018

вместо substr попробуйте использовать mb_substr

substr не предназначен для многобайтовых строк

...