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

如何使用php验证超链接中的纯文本(链接文本)?,php,Php,我正在使用简单的HTMLDOM从其他网站获取数据。在获取数据时,它会获取包含纯文本和不包含纯文本的超链接。我想在获取数据时删除不带纯文本链接文本的超链接。。 我试过下面的代码 if($title==""){ echo "No text";} 及 其中$title是从网站获取的明文 但是这两种方法都不起作用,有人能帮忙吗 提前感谢您的帮助您需要使用带有正则表达式的preg_match来提取链接文本。比如说 if (preg_match("/<a.*?>(.*?)</",$ti

我正在使用简单的HTMLDOM从其他网站获取数据。在获取数据时,它会获取包含纯文本和不包含纯文本的超链接。我想在获取数据时删除不带纯文本链接文本的超链接。。 我试过下面的代码

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

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

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


提前感谢您的帮助

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

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

它真的需要纯文本验证吗

阅读您的问题,您似乎只想删除带有空值的链接

如果后者为真,则可以执行以下操作:

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

在你给我们提供更多关于什么是价值的信息之前,我最好的猜测是试试这样的东西

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

你能举例说明$title可能是什么吗?我不明白你所说的纯文本是什么意思。你能为这样的链接道歉吗?在这样的链接中,url是网址,链接文本是纯文本text@Neysor,如果这是php,JSFIDLE会有什么帮助?@test,我还是不知道你的意思。你能把这些空白填一下吗,$title\u plaintext=。。。$title_notplaintext=…使用简单的HTMLDOM,我们可以提取链接文本。我想要的是,我必须验证是否存在文本。使用regexps创建DOM对象和操作itRegex更容易、更快,只有在您知道数据结构时才能起作用。HTML通常是无效的,因此不应该使用正则表达式来解析它。
if(empty($title))
{
    echo "No Text";
}
$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 
    }

}