ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

как сделать перенос строк в htmlspecialchars()

 

284
arteshuk @arteshuk
$mail_body = htmlspecialchars($user."\n".$quest."\n".$mail);
вот так не работает 🙁

подскажите как надо сделать....спасибо....

$adminEmail = $kernel->pub_modul_properties_get('email');
if ($adminEmail['isset'] && $kernel->pub_is_valid_email($adminEmail['value']))
{//не пустой и валидный email админа
$mail_body = htmlspecialchars($user."\n".$quest."\n".$mail);
$kernel->pub_mail(array($adminEmail['value']),
array($adminEmail['value']),
$adminEmail['value'],
'admin',
'Новый вопрос',
$mail_body,
false);
}

в почту приходит все в одну строку 🙁

Отредактировано arteshuk - 11.01.2011
6600
Александр @admiral
Не \n, а \r\n попробуй для переноса

284
arteshuk @arteshuk
$mail_body = htmlspecialchars($user."\r\n".$quest."\r\n".$mail);
так то же не работает.... 🙁

8497
Степан @Trilby
<?
$user = 'user';
$quest = 'quest';
$mail = 'mail';
$mail_body = htmlspecialchars($user."\r\n".$quest."\r\n".$mail);
echo($mail_body);
?>

Смотрим в браузере результат
user quest mail

Открываем исходный код страницы, и видим там заметный перенос...:
user
quest
mail

Следовательно, нужно писать не \r\n, а обычный <br />



p.s. Только ради Фогги:
Можно <br /> заменять заключением переменных в абзацы (<p></p>)

Отредактировано Trilby - 11.01.2011
284
arteshuk @arteshuk
Следовательно, нужно писать не \r\n, а обычный <br />

тогда так и приходит в почту:

user<br />quest<br />mail
htmlspecialchars() игорит теги html....

Отредактировано arteshuk - 11.01.2011
8497
Степан @Trilby
А если не заключать заветный тег в htmlspecialchars?
Отдельно все три переменные заключи, и соедини в одну строку.
Это не критично, т.к. это не ввод данных юзером

284
arteshuk @arteshuk
Отдельно все три переменные заключи, и соедини в одну строку.

если не сложно, покажи как....

8497
Степан @Trilby
Дык
$user = htmlspecialchars($user);
$quest = htmlspecialchars($quest);
$mail = htmlspecialchars($mail);
$mail_body = $user."<br />".$quest."<br />".$mail;

Сразу говорю, красиво кодить я не умею..

284
arteshuk @arteshuk
Trilby! Огромное спасибо! Так работает!

6600
Александр @admiral
А если все таки \r\n писать) Тогда только заменять \r на пусто , а \n например на <br />
<?php
$user = 'user';
$quest = 'quest';
$mail = 'mail';
$mail_body = str_replace(array($separator,"\r","\n"), array('',"","<br />"), htmlspecialchars($user."\r\n".$quest."\r\n".$mail));
echo($mail_body);
?>

8497
Степан @Trilby
admiral пишет:

А если все таки \r\n писать) Тогда только заменять \r на пусто , а \n например на <br />
<?php
$user = 'user';
$quest = 'quest';
$mail = 'mail';
$mail_body = str_replace(array($separator,"\r","\n"), array('',"","<br />"), htmlspecialchars($user."\r\n".$quest."\r\n".$mail));
echo($mail_body);
?>


В этом случае невозможно угодить Фогги (см.4 пост) 😁

6600
Александр @admiral
Тогда оставлю как домашнее задание - Кто в таком случае сможет угодить Фогги? 😁

8497
Степан @Trilby
$mail_body = str_replace(array($separator,"\r","\n"), array('','</p>',"<p>"), htmlspecialchars("\n".$user."\r\n".$quest."\r\n".$mail."\r"));
м?)

Отредактировано Trilby - 12.01.2011
6600
Александр @admiral
Еще варианты будут?) Бедный Фогги, икается наверное ))

7094
Dim @Render
Смотря ещё каким заголовком почта отправляется и чем приходящая почта проверяется)
Тоже как-то недавно парился с этим, нужно было определиться, html или текст. И я точно так же столкнулся с проблемой переноса строк, в разных отправляемых заголовках (типах документа).
Всё-таки выбрал html и перенос с помощью <br>.

6600
Александр @admiral
#13 - убрал хайд, раз больше вариантов ни у кого нет)