我有一个文本框用户个人资料区域,用户将把rss网址分隔为'return'或每行的每个网址。然后它将保存到数据库。现在我如何获取数组中的所有url?
我知道这是非常基本的问题。搜索网络发现很多东西,我感到困惑。我认为小讨论将如何有所帮助。
我还想进行一些验证,比如如果用户在url之前没有放任何http://,代码会添加它。并忽略除http:// protocols之外的其他URL。
我的CMS是Wordpress,所以如果有任何内置功能可以帮助我告诉我。
答案 0 :(得分:4)
使用爆炸功能后,您需要做一个foreach来进行您正在寻找的验证
$urlArray = explode("\r", $_POST["textBox"])
if(!empty($urlArray))
{
foreach($urlArray as $url)
{
//Do your regex checking here
}
}
根据你的技能水平,如果RegEx过于复杂(虽然我真的建议学习它),你可以看看使用substr来评估每个html行,尽管这是一个功能较弱的版本。一个例子是:
$htmlString = substr($url, 0, 7);
if($htmlString != "http://")
{
$url = "http://" . $url;
}
答案 1 :(得分:1)
使用PHP的爆炸功能:
$urlArray = explode("\r", $POST["URlsInputName"])
这将返回一个URL数组,假设$ POST [“URlsInputName”]包含输入框的值,该值包含由回车符分隔的URL。
答案 2 :(得分:0)
基本块如下:
$text_box_text = <<<TEXT_BOX http://example.com hello.example ftp://ftp.invalid HTTP:/fixslash.invalid TEXT_BOX ; function url_map ( $likely ) { $likely = preg_replace( '/^\s+/', '', $likely ); #clean up white spaces $likely = preg_replace( '/\s+$/', '', $likely ); # $likely = preg_match( '/^\w+:/', $likely ) ? $likely : "http://$likely"; #prepend $likely = preg_replace( '|^http:/*|i', 'http://', $likely ); #fix /s and case return $likely; } $likely_urls = preg_split( '/[\r\n]+/', $text_box_text ); $good_urls = preg_grep( '/^http:/', array_map( "url_map", $likely_urls ) );
由于这是用户输入,你需要更加偏执。更多的错误检查总是按顺序进行:
preg_grep( '|^http://[-\w][-.\w]+/|', ... ) #assure valid host name
等等。