如何使用php验证超链接中的纯文本(链接文本)


How to validate plain text (link text) in a hyperlink using php?

我使用简单的html dom从其他网站获取数据。在获取数据时,它同时获取带有纯文本和不带有纯文本的超链接。我想在获取数据时删除没有纯文本的超链接(链接文本)。。我试过下面的代码

if($title==""){ echo "No text";} 

if(ctype_space($title)) { echo "No text";} 

其中$title是从网站获取的明文

但这两种方法都不起作用。。有人能帮吗

提前感谢您的帮助

在你给我们更多关于什么值的信息之前,我的最佳猜测是尝试这样的

if(empty($title))
{
    echo "No Text";
}

它真的需要"纯文本验证"吗?

阅读你的问题,你似乎只是想删除空值的链接。

如果后者是真的,你可以这样做:

$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());
$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 
    }
}

您需要使用带有正则表达式的preg_match来提取链接文本。例如

if (preg_match("/<a.*?>(.*?)</",$title,$matches))
{
   echo $matches[1];
}