【发布时间】:2011-12-19 23:13:00
【问题描述】:
我正在通过文本区域从我的网站上的用户那里获得输入。输入可能包含 TAG。
我想从输入中提取 url。
$res = get_magic_quotes_gpc() ? stripslashes($data) : $data;
$res = mysql_real_escape_string($res); // php 4.3 and higher
preg_match('#href\s*?=\s*?[\'"]?([^\'"]*)[\'"]?#i', $res, $captures);
$href = $captures[1];
示例
如果输入是这个?
$data = 'any string <a href="http://www.example.com">Any Anchor</a>';
提取出来的输出变成
"\"http://www.example.com""
我检查了每一行之后的输出,2个双引号在
之后mysql_real_escape_string($res);
【问题讨论】:
-
那么不要打电话给
mysql_real_escape_string...? -
我之前告诉过你一些问题,不要一遍又一遍地复制
$res = mysql_real_escape_string($res); // php 4.3 and higher,因为你不需要它。而且很可能您也不需要$res = get_magic_quotes_gpc() ? stripslashes($data) : $data;,因为现在已禁用魔术引号。 -
而不是繁琐的魔术引号检查,一次使用来自php.net/manual/en/security.magicquotes.disabling.php的示例函数之一解决该问题