我知道这听起来有点奇怪,但我会试着解释一下。
使用此代码检查是否$text
包含不受支持的字符:
if(!preg_match('/\A[\w .,]+\z/', $text))
{
echo "Text contains unsupported characters.";
}
现在的问题是$text
用户在 textarea 中输入的文本。
$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>";
一切都很完美,除了一件事。例如,如果这是在 textarea 中输入的文本:
你好,我的名字是约翰。
好的。
你好,我的名字是约翰。
我20岁了。
不。文本包含不受支持的字符。(指的是新行,因为 textarea 的内容发生了变化并且有类似的东西My name is John.\r\nI am 20 years old.
:)
我的问题是:我需要改变什么来支持新的线路?我希望你明白。
编辑:我刚刚发现,没有mysql_real_escape_string
一切都按我想要的方式工作。是否有任何解决方案可以mysql_real_escape_string
与preg_match
(在我的情况下)“结合”或mysql_real_escape_string
应该放弃?