【发布时间】:2011-12-07 16:22:30
【问题描述】:
我有很多文本要使用 PHP 插入到 MySQL 表中。部分文字看起来像这个例子:
Yes, this is 'great'!
要将其填充到 SQL 语句中,我需要转义 '。
我正在使用 ereg-replace $text=mb_ereg_replace("'","\\'", $text); 来完成以下工作:
$sql="insert into mytable (msg) values ('".$text."')";
现在我发现还有另一种文本样式,我必须将这样的内容保存到 MySQL:
As you can see the \' world\' is a "disc"!
所以我尝试像这样添加更多 mb_ereg_replace:
$text=mb_ereg_replace("'","\\'", $text);
$text=mb_ereg_replace("\\","\\\\", $text);
但这不起作用,我只是收到错误消息:PHP Warning: mb_ereg_replace(): mbregex compile err: end pattern at escape in [...]
这是什么原因造成的?我可能犯了一些错误,但找不到它!
感谢您的任何帮助。
【问题讨论】:
-
我正在使用
mb_ereg_replace。看起来,这并没有被弃用:php.net/manual/en/function.mb-ereg-replace.php 问题是,不存在preg_replace的多字节版本,如mb_preg_replace()。所以看起来mb_ereg_replace是在正则表达式上使用多字节(UTF-8)字符串进行搜索/替换的唯一方法!? -
是的,您可以使用
preg_replace-- 您可以使用u开关在preg_xx函数中启用UTF-8。请参阅regular-expressions.info/php.html 了解更多信息。 -
哦,谢谢!如果 php.net 的 preg_replace 文档页面有任何提示,那将很有帮助,谢谢! :-)
-
你是对的;这是我能想到的 PHP 文档不是很好的一个领域。它们通常都很好。