2015-07-18 8 views
0

У меня есть строка текста, которая извлекается из SQL, а затем выполняется через PHP strip_tags и htmlspecialchars, потому что мне нужно удалить все форматирование HTML, пользователь может попытаться добавить. Затем он отображается в текстовом поле, а также в uneditable div. В текстовом поле отображается код исходного HTML-кода (например, & <), и это то, что я хочу. Что касается div, который является предварительным просмотром содержимого textarea, я хочу, чтобы он отображал фактический символ (например, & <). Итак, мне нужен div для преобразования любых специальных символов в html-объекты, но я хочу, чтобы текущие объекты HTML отображались как символы.Почему строка, содержащая объект HTML, не отображающий символ после запуска через htmlspecialchars()

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

Это функция, которую я запускаю строку через как для текстового поля и просмотра DIV:

function removeTags($data) { 
    $data = strip_tags($data); 
    $data = htmlspecialchars($data, ENT_HTML5, 'UTF-8'); 
    return $data; 
} 

Это то, что текстовое поле отображает:

This unit has the ability to lower food temperature from 160&#176;F to 38&#176;F, with 110 lbs. 

An, к сожалению, в окне предварительного просмотра Div показывает та же информация, но я хочу, чтобы div в предпросмотре показывал строку ниже, все еще удаляя любые HTML-теги, а также преобразовывая любые специальные символы в объекты HTML:

Этот прибор имеет возможность понижать температуру пищи от 160 ° F до 38 ° F, с 110 фунтами.

+0

Не забудьте принять ответьте на значок галочки, если он поможет вам решить проблему. –

ответ

0

htmlspecialchars() функция преобразует некоторые символы, такие как & и превращает их в свои HTML-сущности, такие как &amp;.

Кроме того, если вы хотите конвертировать все символы, а не только те, которые преобразуются htmlspecialchars(), используйте вместо этого htmlentities().

Затем вы можете использовать функцию str_replace() для отображения объектов HTML.

Например:

$data = "This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs."; 

$data = "This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs."; 

function removeTags($data) { 
    $data = strip_tags($data); 
    $data = htmlentities($data); 
    return $data; 
} 

echo '<textarea cols="95" rows="6">' . str_replace('&', '&amp;', removeTags($data)) . '</textarea>'; 
echo '<div>' . removeTags($data) . '</div>'; 

В текстовое поле, выход:

This unit has the ability to lower food temperature from 160&deg;F to 38&deg;F, with 110 lbs. 

В DIV, выход:

This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.