在使用PHP DOM从网站抓取的textContent数据之间添加空格



我正试图添加逗号和空白的一些数据,我是从一个网站刮。数据刮擦成功,但它们混在一起,并且空格和逗号只被添加到最后一项。下面是我当前的代码

$html = curl_exec($ch);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$finder = new DomXPath($dom);
$class_ops = 'ipc-inline-list ';
$class_opp = 'ipc-inline ';
$node = $finder->query("//div[@class='$class_ops']//ul[@class='$class_opp']");
foreach ($node as $index => $t) {
if ($index == 3) {
$la = $t->textContent.", ";
}
}

echo $ la;

当前结果

DoyleBrainDavid, 

预期结果

Doyle, Brain, David

我正在使用这个代码

$c1 = curl_init('https://stackoverflow.com/');
curl_setopt($c1, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($c1);
if (curl_error($c1))
die(curl_error($c1));
// Get the status code
$status = curl_getinfo($c1, CURLINFO_HTTP_CODE);
curl_close($c1);
preg_match_all('/<span(.*?)</span>/s', $html, $matches1);

foreach($matches1[0] as $k=>$v){
$enc =  mb_detect_encoding($v);
$v = mb_convert_encoding($v,$enc, "UTF-8");
$match1[$k] = strip_tags ($v);
//$match1[$k] = preg_replace('/^[^A-Za-z0-9]+/', '', $match1[$k]);
}
var_dump($match1);

你可以这样替换

preg_match_all('/<div class="ipc-inline-list">(.*?)</div>/s', $html, $matches1);

返回匹配数组。

我希望这对你有帮助。

您希望每个li,而不是ul作为一个块。试一试:

$node = $finder->query("//div[@class='$class_ops']//ul[@class='$class_opp']/li");

演示:https://3v4l.org/Mvfud

如果这不起作用,应该将实际的HTML内容添加到问题中。

相关内容

  • 没有找到相关文章

最新更新