我正试图添加逗号和空白的一些数据,我是从一个网站刮。数据刮擦成功,但它们混在一起,并且空格和逗号只被添加到最后一项。下面是我当前的代码
$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内容添加到问题中。