用户在如下框中输入网址:
然后我尝试验证/检查URL,所以:
function check_input($data) {
$data = trim($data);
$data = mysql_real_escape_string($data);
return $data;
}
验证后:
$flr_array = explode("\n", $flr_post);
所以,我可以验证每个URL。但mysql_real_escape_string
在网址之间找到空格并添加:
<--print_r information-->
google.net\r\ngoogle.com
我的网址应如下所示:
如何删除\r
,因为它会破坏其他所有内容?
有没有更好的方法来验证网址?
尝试str_replace
,但没有运气。
答案 0 :(得分:1)
验证URL的最佳方法是使用PHP的filter_var()
docs函数,如下所示:
if( ! filter_var($url, FILTER_VALIDATE_URL))) {
echo 'BAD URL';
} else {
echo 'GOOD_URL';
}
答案 1 :(得分:0)
改为使用preg_split,
$parts = preg_split('/[\n\r]+/', $data);
那将会分裂到一个或多个\ n或\ r。
你在为mysql_real_escape_string做什么?这是用于以后的数据库吗?在进行其他处理之前,请勿进行转义。该处理可以打破转义的m_r_e_s(),并且仍然容易受到sql注入。
m_r_e_s()必须是你在sql查询字符串中使用之前对字符串做的最后一件事。
答案 2 :(得分:0)
您应该使用正则表达式来验证$ flr_array中的URL。
使用preg_match(),如果匹配,它将使用结果填充$ matches变量(如果您在函数调用中提供了它)。这就是php.net对它的评价:
“如果提供了匹配,那么它将填充搜索结果。$ matches [0]将包含与完整模式匹配的文本,$ matches 1将包含与第一个匹配的文本匹配的文本带括号的子模式,等等。“
答案 3 :(得分:0)
这就是单引号和双引号之间的差异:
$flr_array = explode('\r\n', $flr_post);
答案 4 :(得分:0)
您可以使用:nl2br() - 在字符串中的所有换行符之前插入HTML换行符
示例:
<?php
echo nl2br("Welcome\r\nThis is my HTML document");
?>
输出:
Welcome<br />
This is my HTML document