Как вывести текст без тегов?

Главные вкладки

Аватар пользователя AACC86 AACC86 21 мая 2020 в 8:14

Вывожу данные в поля таблицы

Тип поля --- Long text
При следущим выводе:
$row[] = l($node->field_tender_location['und'][0]['value'], 'node/' . $node->nid);
выводится текст с тегами, тоесть не преобразуется html в нормальный текст.

Как вывести текст без тегов?

Спасибо

Лучший ответ

Аватар пользователя charOFF charOFF 22 мая 2020 в 10:01

Да, точно strip_tags же не заменяет сущности html типа  , только удаляет теги. Можно еще к strip_tags добавить html_entity_decode, но это пожалуй будет лишняя операция, лучше просто объединить оба вышеуказанных способа в один.

<?php
$row
[] = l(strip_tags($node->field_tender_location['und'][0]['value']), 'node/' $node->nid, array('html' => TRUE));
?>

тогда тэги уберутся, а оставшийся текст уже не будет прогоняться через htmlspecialchars внутри функции l()

Комментарии

Аватар пользователя charOFF charOFF 21 мая 2020 в 22:46

Если вы хотите удалить из текста все теги, чтобы получился обычный текст, то очищайте с помощью strip_tags

<?php
$row
[] = l(strip_tags($node->field_tender_location['und'][0]['value']), 'node/' $node->nid);
?>

А если надо, чтобы тэги сохранились внутри ссылки, то передавайте в функцию l() третьим параметром дополнительные опции array('html' => TRUE)

<?php
$row
[] = l($node->field_tender_location['und'][0]['value'], 'node/' $node->nid, array('html' => TRUE));
?>
Аватар пользователя AACC86 AACC86 22 мая 2020 в 9:15

Уважаемый charOFF, очень благодарен Вам за помощь. При помощи данной функции теги и вправду пропали. Но остался один нюанс: так как язык на котором выставляется текст содержит диакретические знаки, в тексте остались знаки. На пример: буква Ț прописывается как набор знаков типа end n b s p . Можно ли как-то решить и этот вопрос? Буду очень благодарен. Спасибо

Аватар пользователя charOFF charOFF 22 мая 2020 в 10:01

Да, точно strip_tags же не заменяет сущности html типа &nbsp;, только удаляет теги. Можно еще к strip_tags добавить html_entity_decode, но это пожалуй будет лишняя операция, лучше просто объединить оба вышеуказанных способа в один.

<?php
$row
[] = l(strip_tags($node->field_tender_location['und'][0]['value']), 'node/' $node->nid, array('html' => TRUE));
?>

тогда тэги уберутся, а оставшийся текст уже не будет прогоняться через htmlspecialchars внутри функции l()