php htmlentities для декодирования textarea - PullRequest
3 голосов
/ 25 декабря 2009

У меня есть текстовая область, и я хотел бы взять ввод текстовой области и объединить все это вместе. Все работает хорошо, за исключением того, что он избегает кавычек. Например, test's выводится как test/'s

Чтобы исправить это, я попытался htmlenttries, таких как,

<?php $inputtext= $_POST['textinput'];
        $encodetext = htmlentities($inputtext);
        $finaltext = html_entity_decode($encodetext);

        echo '<p>'.$finaltext .'</p>';  ?>

Это должно работать в соответствии с руководством html_entity_decode (если я не прочитал его неправильно, что вполне может иметь место)

Ответы [ 3 ]

6 голосов
/ 25 декабря 2009

Решение, вероятно, для вас, чтобы снять косые черты.

Косые черты добавляются автоматически, когда данные поступают из POST или GET. Это называется магическими кавычками и по умолчанию включено.

Вы можете удалить эти косые черты, используя stripslashes()

<code><?php

$text = $_POST['txtarea']; // from textarea
if(get_magic_quotes_gpc()){
  $text = stripslashes($text);
  // strip off the slashes if they are magically added.
}
$text = htmlentities($text);
// what htmlentities here does is really to convert:
//   & to &amp;
//   " to &#039;
//  and change all < and > to &lt; and &gt; respectively. this will automatically disable html codes in the text.
echo '<pre>'.$text.'
'; ?>

См .: http://php.net/manual/en/function.stripslashes.php

2 голосов
/ 24 июня 2011

Вам нужно использовать $encodetext = htmlentities ($inputtext, ENT_QUOTES);, который не будет пытаться избежать одиночных и двойных кавычек. Смотрите здесь под flags : htmlentities

1 голос
/ 25 декабря 2009

Убедитесь, что вы не передаете вторые параметры в своих вызовах htmlentities и html_entity_decode. Если вы это сделаете, они будут по-разному экранировать / избегать кавычек. Проверьте описание параметра $quote_style в документации для htmlentities и html_entity_decode.

...