Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用symfonydomcrawler过滤或提取不包括span的链接元素,并将它们保存在逗号分隔的数组中?_Php_Arrays_Symfony_Xpath_Domcrawler - Fatal编程技术网

Php 如何使用symfonydomcrawler过滤或提取不包括span的链接元素,并将它们保存在逗号分隔的数组中?

Php 如何使用symfonydomcrawler过滤或提取不包括span的链接元素,并将它们保存在逗号分隔的数组中?,php,arrays,symfony,xpath,domcrawler,Php,Arrays,Symfony,Xpath,Domcrawler,,goutte,dom爬虫,guzzle,web刮刀 ,goutte,dom爬虫,guzzle,web刮刀 ,dom爬虫, 你需要刮什么?有span标记的标记?只有a标记文本而不是span标记中的文本,用逗号分隔。仅链接文本?是的,链接文本仅用逗号分隔。@Coolsain根据您预期输出的上一个索引,它包含web scraster,这是一个打字错误,因为它包含在span标记中。我预期会出现类似的情况对于我的symfony dom爬虫脚本$links['tag']=$crawler->filter


,goutte,dom爬虫,guzzle,web刮刀
,goutte,dom爬虫,guzzle,web刮刀
,dom爬虫,


你需要刮什么?有span标记的标记?只有a标记文本而不是span标记中的文本,用逗号分隔。仅链接文本?是的,链接文本仅用逗号分隔。@Coolsain根据您预期输出的上一个索引,它包含
web scraster
,这是一个打字错误,因为它包含在span标记中。我预期会出现类似的情况对于我的symfony dom爬虫脚本$links['tag']=$crawler->filter('span.tl>:not(span))->每个(函数($node){return$node->text();})@我的帖子怎么了?你能告诉我丢失了什么吗?我相信它解决了问题,但在我的例子中,我使用的是symfony domcrawler的crawler对象。
<?php
ini_set('display_errors', 1);

$string=<<<HTML

<span class="tl">
<a href="/en/laravel/" class="c">laravel</a>, <span>goutte</span>, <a href="/en/html/">html</a>, <span>dom crawler</span>, <a href="/en/form/">form</a><span>guzzle</span>, <span>web scrapper</span>
</span>
<span class="tl">
<a href="/en/laravel/" class="c">laravel</a>, <span>goutte</span>, <a href="/en/elequent/">elequent</a>, <span>dom crawler</span>, <span>guzzle</span>, <a href="/en/orm/">orm</a>, <span>web scrapper</span>
</span>
<span class="tl">
<a href="/en/laravel/" class="c">laravel</a>, <a href="/en/goutte">goutte</a>, <a href="/en/php/">php</a>, <span>dom crawler</span>, <a href="/en/guzzle">guzzle</a>, <span>web scrapper</span>
</span>

HTML;

$domDocument = new DOMDocument();
$domDocument->loadHTML($string);

$domXPath = new DOMXPath($domDocument);
$results = $domXPath->query('//span[@class="tl"]');
$data=array();
foreach($results as $result)
{
    $tempArray=array();
    $aNodes=$domXPath->query(".//a",$result);
    foreach($aNodes as $aNode)
    {
        if($aNode instanceof DOMElement)
        {
            $tempArray[]=$aNode->nodeValue;
        }
    }
    $data[]=  implode(", ", $tempArray);
}
print_r($data);