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