3

少し奇妙に聞こえるかもしれませんが、説明してみます。
次のコードを使用して、$textサポートされていない文字が含まれているかどうかを確認します。

if(!preg_match('/\A[\w .,]+\z/', $text))
{
    echo "Text contains unsupported characters.";
}

問題は$text、ユーザーがテキストエリアに入力したテキストです。

$text_c = $_POST['text'];
$text = mysql_real_escape_string($text_c);
echo "<form method='post'><textarea name='text'>".$text."</textarea><br /><input type='submit' name='submit' value='Submit'></form>";

1 つのことを除いて、すべてが完全に機能します。例、これがテキストエリアに入力されたテキストの場合:

こんにちは、私の名前はジョンです。

わかった。

こんにちは、私の名前はジョンです。
私は20歳です。

番号。テキストにサポートされていない文字が含まれています。(テキストエリアの内容が変化し、次のようなものがあるため、新しい行を参照しますMy name is John.\r\nI am 20 years old.:)

私の質問は次のとおりです。新しい行をサポートするために何を変更する必要がありますか? お分かりできると良いのですが。

編集:mysql_real_escape_stringすべてが思い通りに機能しないことを発見しました。mysql_real_escape_string(私のpreg_match場合)「組み合わせる」またはmysql_real_escape_stringドロップするはずの解決策はありますか?

4

2 に答える 2

1

\s空白 (改行、タブ、およびスペース) を表すために使用できます。

したがって、正規表現は次のようになります。/\A[\w .,\s]+\z/

\n \r両方とも有効なエスケープ文字であり\r\n、スペース/タブを含めたくない場合は一緒に dos 改行に一致することに注意してください。

参考文献: http://www.regular-expressions.info/reference.html

于 2013-09-07T05:43:51.993 に答える