我将一个字符串传递给这个函数:
function linkify($text) {
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'<a href="\\1">\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
'\\1<a href="http://\\2">\\2</a>', $text);
$text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})',
'<a href="\\1">\\1</a>', $text);
return $text;
}
我尝试将文本插入数据库中的一个字段,该数据库是一个500字符的varchar,我得到一个错误,并且文本无法插入,但是当我不使用该函数时,我没有得到任何错误。
有什么想法吗?
编辑: 这是我得到的错误:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'http://sitename.com/alpha/">http:/sitename.com/alpha/' at line 1"
因此它是函数linkify的一个问题...感谢帮助修复语法错误..看起来像双引号与单引号? 谢谢!
答案 0 :(得分:0)
根据您的错误消息,几乎可以肯定您在插入数据之前没有转义数据
我假设你在这个例子中使用mysql
$value = mysql_escape_string($text);
$sql = "INSERT INTO TABLENAME (COLNAME) VALUES ('$value')";
mysql_query($sql) or die(mysql_error());