查找至少包含 10 个字符的 src 属性
Find src attributes with at least 10 characters
我正在工作 preg_match_all
,它从网站上找到所有图像并获取 src
。我的问题是如何检查 $matches
是否超过 10 个字符
我当前的代码:
$ch = curl_init('https://www.everypixel.com/search?q=italy&is_id=1&st=free');
$html = curl_exec($ch);
preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', $html, $matches);
if (sizeof($matches[1]) >= 10) {
// something
}
只需要将 if (sizeof($matches[1]) >= 10) {
替换成可以在 preg_match_all
中检查的内容
正则表达式或其他直接字符串方法不是解析 html 的好工具。 PHP 有许多为此设计的 类:DOMDocument
、DOMXPath
、DOMWhatEverYouWant
。您必须学习如何使用这些 类 以及如何操纵 DOM.
$ch = curl_init('https://www.everypixel.com/search?q=italy&is_id=1&st=free');
$html = curl_exec($ch);
libxml_use_internal_errors(true);
$dom = new DOMDocument;
$dom->loadHTML($html);
$xp = new DOMXPath($dom);
$results = $xp->query('//img/@src[string-length(.)>9]');
foreach ($results as $result) {
echo $result->nodeValue, "<br>";
}
有办法在正则表达式中设置最小和无限最大所需字符数。 {10,} 表示从最少 10 个开始,此规则没有限制 [^\'"]
$html = file_get_contents('https://www.everypixel.com/search?q=italy&is_id=1&st=free');
preg_match_all('/<img.*?src=[\'"]?([^\'"\s]{10,})/i', $html, $matches);
// All search lines are in $matches[1]
我正在工作 preg_match_all
,它从网站上找到所有图像并获取 src
。我的问题是如何检查 $matches
是否超过 10 个字符
我当前的代码:
$ch = curl_init('https://www.everypixel.com/search?q=italy&is_id=1&st=free');
$html = curl_exec($ch);
preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', $html, $matches);
if (sizeof($matches[1]) >= 10) {
// something
}
只需要将 if (sizeof($matches[1]) >= 10) {
替换成可以在 preg_match_all
正则表达式或其他直接字符串方法不是解析 html 的好工具。 PHP 有许多为此设计的 类:DOMDocument
、DOMXPath
、DOMWhatEverYouWant
。您必须学习如何使用这些 类 以及如何操纵 DOM.
$ch = curl_init('https://www.everypixel.com/search?q=italy&is_id=1&st=free');
$html = curl_exec($ch);
libxml_use_internal_errors(true);
$dom = new DOMDocument;
$dom->loadHTML($html);
$xp = new DOMXPath($dom);
$results = $xp->query('//img/@src[string-length(.)>9]');
foreach ($results as $result) {
echo $result->nodeValue, "<br>";
}
有办法在正则表达式中设置最小和无限最大所需字符数。 {10,} 表示从最少 10 个开始,此规则没有限制 [^\'"]
$html = file_get_contents('https://www.everypixel.com/search?q=italy&is_id=1&st=free');
preg_match_all('/<img.*?src=[\'"]?([^\'"\s]{10,})/i', $html, $matches);
// All search lines are in $matches[1]