2009-12-25 5 views
3

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

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

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

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

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

+0

Вы получаете "test/'s" или "test \' s"? Кроме того, код, который вы опубликовали, не распечатывает скрытые кавычки. – outis

+2

У вас есть волшебные кавычки, включенные в любой случай? –

+0

Что вы надеетесь достичь, вызвав 'htmlentities', а затем' html_entity_decode'? Они являются инверсиями друг друга, поэтому 'html_entity_decode (htmlentities ($ str)) == $ str'. – outis

ответ

6

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

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

Вы можете удалить эти слэш с помощью stripslashes()

<?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.'</pre>'; 

?> 

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

+0

, который, казалось, сделал трюк спасибо – BandonRandon

+0

не проблема вообще! – mauris

+0

** NB: **, 'get_magic_quotes_gpc()' _allways возвращает FALSE с PHP 5.4.0_ [doc] (http://php.net/manual/en/function.get-magic-quotes-gpc.php# refsect1-function.get-magic-quotes-gpc-changelog), поэтому код должен теперь читать 'if (get_magic_quotes_gpc() || version_compare (PHP_VERSION, '5.4.0', '>')) {'. – nobug

1

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

2

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