1

私は次のような文字列から始めます:入力テキスト)。

したがって、本質的に私の声明は次のようになります。

$query = sanitize($_POST['query']); // gives the result string

この文字列から「\r\n\r\n」を削除したいと思います。これまでのところ、次を使用してこれを実行しようとしました:

$query = preg_replace("/\r\n\r\n/", " ", $query);

また

$query = str_replace("\r\n\r\n", " ", $query);

どれも機能していないようですか?

ただし、次のようにすると:

$query = "I would like to:\r\n\r\n1.) Rid this mess\r\n\r\n\2.) Now Please";
$query = preg_replace("/\r\n\r\n/", " ", $query); // I tried str_replace() too
var_dump($query);
exit;

欲しい出力が得られます...

誰かが私になぜこれが起こっているのか、どうすれば問題を解決できるのか説明してもらえますか?

私は髪を抜いてもほとんどハゲではないので、アドバイス、意見、提案をいただければ幸いです...

ありがとうございました!

編集 :

これは function sanitize() を助けるかもしれません:

function html($text)
{
    return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}

function htmlout($text)
{
    return html($text);
}

function cleanInput($input)
{
    $search = array(
        '@<script[^>]*?>.*?</script>@si',   // Strip out javascript
        '@<[\/\!]*?[^<>]*?>@si',            // Strip out HTML tags
        '@<style[^>]*?>.*?</style>@siU',    // Strip style tags properly
        '@<![\s\S]*?--[ \t\n\r]*>@'         // Strip multi-line comments
    );
    $output = preg_replace($search, '', $input);
    $output  = htmlout($output);
    return $output;
}

function sanitize($input)
{
    if (is_array($input))
    {
        foreach($input as $var=>$val)
        {
            $output[$var] = sanitize($val);
        }
    }
    else
    {
        include "C:/wamp/www/includes/inc/main/db.inc.php";
        if (get_magic_quotes_gpc())
        {
            $input = stripslashes($input);
        }
        $input  = cleanInput($input);
        $output = mysqli_real_escape_string($link, $input);
    }
    return $output;
}
4

4 に答える 4

1

あなたは魔法の引用を持っていますか?

http://php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc

それはあなたのスラッシュを逃れているかもしれません。

于 2013-02-11T13:37:37.303 に答える
1

唯一の適切な解決策

  1. sanitize()関数を取り除く
  2. 準備済みステートメントを使用して、データをデータベースに入れます。
  3. 関数を使用htmlout()して、ユーザーのテキストを表示します。

ここここでもっと読むことができます

于 2013-02-11T10:46:57.377 に答える
0

これは私のために働いた

$string = preg_replace("/\\\\r\\\\n\\\\r\\\\n/", "", $string);
于 2014-11-09T08:22:05.193 に答える
0

データベースにリテラル\r\n文字がある場合は、スラッシュを 4 倍にする必要があります。

したがって、これを使用すると、理論的にはトリックを行う必要があります。

$query = preg_replace("/\\\\r\\\\n\\\\r\\\\n", " ", $query);
于 2013-02-11T10:41:15.873 に答える