Параметр double_encode в htmlentities () работает неправильно? - PullRequest
1 голос
/ 08 декабря 2010

Эй, ребята, я пытаюсь использовать htmlentities () для преобразования символов текстовой области в HTML-коды. Код, который я сейчас имею, выглядит так:

 var_dump($colors);
 $colors= htmlentities($colors, ENT_QUOTES, 'UTF-8', false);
 var_dump($colors);

, который возвращает это:

    string(31) "• Red 
    • Green
    • Blue<br />"
    string(46) "&bull; Red 
    &bull; Green
    &bull; Blue&lt;br /&gt;"

Я предполагал, что передача false параметру double_encode предотвратит преобразование <br /> в &lt;br /&gt;.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 08 декабря 2010

Звучит так, будто вы хотите "\n" вместо <br /> внутри вашего textarea.

Чтобы автоматизировать это из ваших данных, вы можете сделать ...

$colors = preg_replace('/<br\s?\/?>/', "\n", $colors);

Двойное кодирование означает, что такие вещи, как &amp;amp;, не произойдут.

1 голос
/ 08 декабря 2010

Параметр double_encode предотвращает кодирование существующих HTML-объектов (например, &bull;). <br /> является , а не HTML-сущностью, поэтому она кодируется.

...