我正在使用简单的html dom从其他网站获取数据。在获取数据时,它同时获取包含纯文本和非纯文本的超链接。我希望在获取数据时删除不含纯文本(链接文本)的超链接。我已经尝试过下面的代码
if($title==""){ echo "No text";} 和
if(ctype_space($title)) { echo "No text";} 其中$title是从网站获取的明文
但是这两种方法都没有worked..can任何一个有帮助
预先感谢您的帮助
发布于 2012-03-03 17:43:25
在你给我们更多关于什么值的信息之前,我最好的猜测是尝试这样的东西
if(empty($title))
{
echo "No Text";
}发布于 2012-03-03 17:41:21
它真的需要“纯文本验证”吗?
阅读你的问题,你似乎只想删除空值的链接。
如果是后者,您可以这样做:
$html = <<<EOL
<a href="#">Text</a>
<a href="#"></a>
<a href="#">More Text</a>
<a href="#"></a>
EOL;
$dom = new DOMDocument;
$dom->loadHTML($html);
$links = $dom->getElementsByTagName('a');
foreach ($links as $link) {
if (strlen(trim($link->nodeValue)) == 0) {
$link->parentNode->removeChild($link);
}
}
var_dump($dom->saveHTML());发布于 2012-03-03 17:55:30
$dom = new DOMDocument;
$dom->loadHTML($html);
$xPath = new DOMXPath($html);
$links_array = $xPath->query("//a"); // select all a tags
$totalLinks = $links_array->length; // how many links there are.
for($i = 0; $i < $totalLinks; $i++) // process each link one by one
{
$title = $links_array->item($i)->nodeValue; // get LInkText
if($title == '') // if no link text
{
$url = $links_array->item($i)->getAttribute('href');
// do here what you want
}
}https://stackoverflow.com/questions/9544760
复制相似问题