【问题标题】:PHP Remove Non-URLs From ArrayPHP 从数组中删除非 URL
【发布时间】:2016-10-24 19:19:00
【问题描述】:

我正在使用 PHP 中的正则表达式从网站中抓取 URL 列表,并使用以下代码清理结果。

// Echo each found result
foreach ($matches as $val) {
    $results[] = GetStringBetween($val[1], "http://", "&");
}

$results = array_unique($results);
$results = array_filter($results);

它可以工作,但问题是它会产生一些不需要的结果,例如:

ed_search?q=product

有什么方法可以过滤并只保留数组中的有效 url?

我需要以 www.、http:、https: 开头的 URL

【问题讨论】:

  • 首先你必须定义一个有效的 url 是什么。 href="kittens.jpg" 是一个“有效的 url”,即使它不包含协议、主机或路径...
  • 我希望它以 www.、http:、https: 开头

标签: php arrays filter


【解决方案1】:
$url = "xxxxx";

if( filter_var($url, FILTER_VALIDATE_URL)  !== FALSE )
{
    // validated as an url
}

http://php.net/manual/en/filter.filters.validate.php

【讨论】:

  • 您的代码似乎没有做任何事情,我尝试了 unset($val[1]);在 if 语句中,它不会改变任何东西。
【解决方案2】:
$urls = array_filter($urls, function ($url) {
    return filter_var($url, FILTER_VALIDATE_URL);
});

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
猜你喜欢
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
相关资源
最近更新 更多