Прочитайте документацию
setcookie(), посмотрите какие параметры принимает эта функция, посмотрите, что вы ей передаёте. Сразу станет понятно, почему она работает не так, как вы ожидаете (обратите внимание на разницу между "
не работает" и "
работает не так, как я хочу").
$phone = "{$_COOKIE['phone']}"; // Зачем сдесь нужны фигурные скобки?
Фигурные скобки помогают php правильно
обработать переменные внутри строки. В данном случае они не нужны, можно просто написать
"$_COOKIE['phone']"
, но если
хорошо подумать, станет понятно, что мы занимаемся какой-то хренью - переводим переменную в строку, чтобы интерполировать и получить её значение. Убираем кавычки вообще:
$phone = $_COOKIE['phone'];
А можно как-то проще написать форматирование?
Можно использовать другие конструкции:
sprintf,
preg_replace, но
проще код от этого не станет. Ещё можно подключить какую-нибудь библиотеку, в которой эта задача уже решена, но с вашим уровнем программирования пока не стоит. Встроенного
Волшебного Форматирователя Номеров Телефонов в php, к сожалению, нет.
Вот дождёмся, когда его в джаву встроят и тогда портируем.Какие ошибки я допустил?
Code и format - это должны быть строки, а вы используете константы (без кавычек). Такие константы не определены, поэтому php просто возвращает их название в виде строки и код работает как должен. Но если включить вывод предупреждений, вы увидите, что интерпретатору не очень нравится то, чем вы его кормите.
Но это не самая большая проблема. Зачем вообще в этой функции аргумент, да ещё с таким ужасным названием? Явно же должно быть
две функции: одна получает номер, другая его форматирует. Композиция, все дела.