Действительно странное поведение substr в PHP, несогласованные результаты - PullRequest
0 голосов
/ 08 мая 2020

Итак, у меня есть этот код:

$phone1="‭1234567890‬";

$phone2="1234567890";

$phoneformat1 = '('.substr($phone1, 0, 3).') '.substr($phone1, 3, 3).'-'.substr($phone1,6);

$phoneformat2 = '('.substr($phone2, 0, 3).') '.substr($phone2, 3, 3).'-'.substr($phone2,6);

echo $phoneformat1 . "<br>";

echo $phoneformat2;

, и это результат:

(‭) 123-4567890‬
(123) 456-7890

Может кто-нибудь объяснить мне, что здесь происходит? Почему один и тот же код дает непостоянные результаты? Вы можете проверить это на http://phptester.net

1 Ответ

4 голосов
/ 08 мая 2020

Так как реальное значение первого - $phone1="\U+202D1234567890\U+202C";, а второго - $phone2="1234567890";.

Было бы полезно проверить значение с помощью онлайн-инструментов, которые также показывают непечатаемые символы, такие как https://www.soscisurvey.de/tools/view-chars.php, чтобы убедиться, что значение является «реальным» или с некоторыми дополнительными символами.

...