当回显而不仅仅删除所有其他元标记时,它似乎重复描述,例如:
BBC有13个不同的元标记,当我在我的脚本中回显出它的描述时,它重复了13次。
<?php
//make the array
$TAarray = explode("\n", strip_tags($_POST['TAData']));
foreach ($TAarray as $key => &$line) {
$line = trim($line);
// get the meta data for each url
$tags = get_meta_tags($line);
echo '<tr>';
foreach ($tags as $meta)
{
echo (isset($tags['description']))?"<br><br />\nDescription($line):<br>\n".$tags['description']:"<br>\nDescription($line):<br>\nNo Meta Description.";
/*echo '<td>' . $meta . '</td>';*/
}
echo '</tr>';
}
?>
以下是任何人都希望看到它的网址:http://php-playground.co.cc/testdir/metaex.php
PS
我知道复选框不起作用,它们仅用于布局
答案 0 :(得分:1)
您正在循环使用元标记,并且每个元标记的 您正在回显描述。
摆脱循环。
答案 1 :(得分:1)
我认为这就是你要做的事情:
<?php
//make the array
$TAarray = explode("\n", strip_tags($_POST['TAData']));
foreach ($TAarray as $key => &$line) {
$line = trim($line);
// get the meta data for each url
$tags = get_meta_tags($line);
echo '<tr>';
echo (isset($tags['description']))?"<br><br />\nDescription($line):<br>\n".$tags['description']:"<br>\nDescription($line):<br>\nNo Meta Description.";
echo '<td>' . $tags['description'] . '</td>';
echo '</tr>';
}
?>
您需要注意已删除第二个for循环。
答案 2 :(得分:0)
如果您对引用使用foreach
,最好在循环后删除该引用:
foreach ($TAarray as $key => &$line)
{
$line = trim($line);
}
unset($line); # remove the reference for safety reasons
但是因为你没有在代码之后迭代$TAarray
,所以无论如何代码都是多余的。不要写多余的代码。我建议如下:
//make the array
$TAarray = explode("\n", strip_tags($_POST['TAData']));
$TAarray = array_map('trim', $TAarray);
我建议你把它放到它自己的功能中:
/**
* @param string $html
* @return string[] lines
*/
function getTrimmedTextLinesArrayFromHTMLBlock($html)
{
$text = strip_tags($html);
$lines = explode("\n", $text);
$trimmed = array_map('trim', $lines);
return $trimmed;
}
然后您可以在任何您认为合适的地方使用它。您还可以使用不同的输入独立测试此功能:
$lines = getTrimmedTextLinesArrayFromHTMLBlock($_POST['TAData']));
$whitelist = array("description");
foreach ($lines as $line)
{
if (! $tags = get_meta_tags($line)) continue;
echo '<tr>';
foreach ($tags as $key => $meta)
{
if (! in_array($key, $whitelist)) continue;
echo '<td>' . $meta . '</td>';
}
echo '</tr>';
}
我希望这有用。