如何在使用php的超链接中验证纯文本(链接文本)?
我正在使用简单的html dom从其他网站获取数据。在获取数据时,它会以纯文本和纯文本方式提取这两个超链接。我想删除链接,而不纯文本(链接文本),而获取数据.. 我曾尝试下面的代码如何在使用php的超链接中验证纯文本(链接文本)?
if($title==""){ echo "No text";}
和
if(ctype_space($title)) { echo "No text";}
其中$标题明文从网站获取
但两者方法didnt worked..can任意一个帮助
提前感谢您的帮助
直到你给我们什么样的价值是我最好的猜测是尝试这样的事情
if(empty($title))
{
echo "No Text";
}
您需要使用preg_match和正则表达式来提取链接文本。例如
if (preg_match("/<a.*?>(.*?)</",$title,$matches))
{
echo $matches[1];
}
使用简单的html dom我们可以提取链接文本http://stackoverflow.com/questions/9518368/how-can-we-get-specific-links-using-simple-html-dom/9518469#9518469。我想要的是我必须验证是否有文本 – Eka 2012-03-03 09:06:55
使用正则表达式来创建DOM对象并对其进行操作会更容易和更快 – 2012-03-03 09:43:43
正则表达式只在知道数据结构时才会起作用。 HTML通常无效,因此不应使用Regex来解析它。 – 2012-03-03 09:55:11
它真的需要“纯文本验证”吗?
阅读你的问题,似乎你只是想删除空值的链接。
如果是后者,你可以做这样的事情:
$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
}
}
你可以给出'$ title'可能的例子吗?我不明白你的意思是纯文本。 – 2012-03-03 08:54:00
你认为做一个[jsfiddle](http://jsfiddle.net/) – Neysor 2012-03-03 08:55:22
对不起,在这样的链接Link text其中“网址”是网址和“链接文本”是明文 – Eka 2012-03-03 08:56:23