#php #html #strpos
#php #HTML #strpos
Вопрос:
Я хочу посмотреть $text
, содержит ли значение какое-либо форматирование HTML, чтобы я мог соответствующим образом настроить электронное письмо PHPMailer как HTML или обычный текст. Текст теряет перевод строки, если рассматривается как HTML.
$email_body="<p><b>This is html code</b></p>";
$text = htmlentities($email_body);
if (strpos($text,"<b>") !== false) {
echo " Found a b ";
}
Это не находит это.
Комментарии:
1. Я бы предположил, что вы, возможно, делаете это в обратном направлении; вместо того, чтобы генерировать свой html, а затем удалять теги; возможно, вам следует начать только с текста, а затем создавать html в зависимости от того, html это или обычный текст.
2. Текст поступает из формы, в которую пользователь может вводить либо прямой текст, либо текст html. Мне нужно выяснить, содержит ли он html-код, чтобы я мог указать отправителю сообщения правильно отформатировать тело.
Ответ №1:
Есть способы сделать это с помощью регулярных выражений через preg_match
или DOMDocument
, но есть более простой способ: использовать strip_tags
, а затем сравнить урезанное значение с не урезанным значением.
// Set a test array of mixed strings.
$email_body_array = array();
$email_body_array[] = "<p><b>This is html code.</b></p>";
$email_body_array[] = "This is plain text.";
$email_body_array[] = "This is a <b>bold</b> statement..";
// Now roll through the strings amp; test them.
foreach ($email_body_array as $email_body) {
$email_body_stripped = strip_tags($email_body);
$text = htmlentities($email_body);
if ($email_body !== $email_body_stripped) {
echo "That has HTML!<br />";
}
else {
echo "Boring, plain old text.<br />";
}
}
Это вывод из приведенного выше, показывающий концепцию в действии:
У этого есть HTML!
Скучный, обычный старый текст.
У этого есть HTML!