Каков наилучший способ нормализации и переноса строки в PHP? - PullRequest
0 голосов
/ 28 февраля 2012

Я собираю данные textarea в форме.На получающей странице мне нужно сохранить это в скрытом поле для POST на третьей странице для дальнейшей обработки (отправка по электронной почте, сохранение в файл и т. Д.). Я понял, что на моем общем хосте включены Magic Quotes и чтоне может быть изменено - таким образом, я знаком с stripslash (), где это необходимо.

Перед заполнением скрытого поля, скажем, 3 абзацами текста и смешиванием с ", ', $ и, возможно, с чем-либо еще из любого источника(Word, RTF, InDesign, кто знает) это, конечно, не готово быть значением поля html, поэтому я думаю, что запустите на нем htmlentities (). Кажется, работает хорошо. Формы сообщений и на 3-й странице обработки, которую я запускаюпроцедура очистки (минимальное время без вызова htmlentities ()), главным образом, для очистки любого сгенерированного эквалайзера MQ. Вот моя функция очистки с кодированием html (есть еще одна без / без той, которую я запускаю до обработки в конце моего потока задач)

 function cleanHtmlEncodeStrings($str)
 {

       $text = stripslashes( $str );

       // First, replace UTF-8 characters.  (borrowed from a post on the web)
       $text = str_replace(
            array("\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\xa6"),
            array("'", "'", '"', '"', '-', '--', '...'),
             $text
       );

       // Next, replace their Windows-1252 equivalents.
       $text = str_replace(
            array(chr(145), chr(146), chr(147), chr(148), chr(150), chr(151), chr(133)),
            array("'", "'", '"', '"', '-', '--', '...'),
            $text
      );

      // Next, replace CR & LFs with
      $find = array("\r\n", "\n\r", "\n", "\r", "\R" , "\t", "\x0B");
      $text = str_replace($find, " ", $text );

      $text = htmlentities ($text, ENT_QUOTES, "UTF-8");

      return $text;

 }

"Мрачная дистанция" - книга о чувствах художника, жаждущих своего родного штата Северная Каролина.«Заметьте, что незамеченным является бегущая тема в моей работе. Я поднимаю обычное на поверхность, потому что считаю его самым честным, ярким и красивым. Со мной красота прекрасна».

становится ....

"Мрачная дистанция" - это книга о том, как художница испытывает тоску по своему родному штату Северная Каролина.«Заметьте, что незамеченным является бегущая тема в моей работе. Я поднимаю обычное на поверхность, потому что считаю его самым честным, ярким и красивым. Красота мне подходит».

Я понятия не имею, почему «она, как предполагается, входит, не попадает под мою функцию».

Мой реальный вопрос заключается в том ... как пуленепробиваемый способ справиться с этимтипы текстовых областей?Я не могу объяснить каждый нечетный символ, который кто-то попытается ввести, так что как лучше?

Спасибо!Рич

[примечание: я не пытаюсь сделать двойной пост.Скорее я вижу, могу ли я переформулировать мою проблему более кратким способом.Пока что это не работает :)]

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Когда-либо рассматривалось использование сеансов для хранения данных на сервере для дальнейшей обработки вместо перемещения текстов между сервером и браузером туда и обратно?

0 голосов
/ 28 февраля 2012

Я использую base64_encode / base64_decode. Попробуйте это:

<?
$url = $_SERVER['SCRIPT_NAME'];
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['text']) {
        if (get_magic_quotes_gpc()) {
            $text = stripslashes($_POST['text']);
        } else {
            $text = $_POST['text'];
        }
        $escaped = base64_encode($text);
        ?>
        <form action="<?= $url ?>" method="post">
        <p>Hidden data: <i><?= $escaped ?></i></p>
        <input type="hidden" name="encoded" value="<?= $escaped ?>">
        <input type="submit" value="Send hidden data">
        </form>
        <?
    } else if ($_POST['encoded']) {
        $decoded = base64_decode($_POST['encoded']);
        ?>
        <p><?= htmlspecialchars($decoded) ?></p>
        <p><a href="<?= $url ?>">Try again</a></p>
        <?
    }
} else {
    ?>
    <form action="<?= $url ?>" method="post">
    <textarea name="text"></textarea>
    <input type="submit" value="Send source data">
    </form>
    <?
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...