← К заметкам

Заметки

print_r показывает имя отправителя, но скрывает email

В поле отправителя лежит строка Иван Иванов <ivan@example.com>, а print_r в браузере показывает только имя. Почтовый модуль мог ничего не потерять: браузер интерпретирует угловые скобки как разметку.

Для проверки экранируйте строку перед выводом в HTML:

$s_from = 'Иван Иванов <ivan@example.com>';
echo '<pre>';
echo htmlspecialchars($s_from, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
echo '</pre>';

Для массива применяется тот же порядок: сначала print_r($ar_fields, true), затем htmlspecialchars. Сам тег <pre> сохраняет пробелы, но не отключает разбор HTML.

Экранирование нужно здесь для отображения. Оно не разбирает адрес отправителя и не должно менять исходное значение, которое сохраняется в почтовой системе.

В текстовом CLI такого эффекта нет. Поэтому при расхождении вывода полезно сравнить исходный ответ и то, как его нарисовал браузер.

Документация: htmlspecialchars.