0

他のすべてのメタ タグを削除するのではなく、エコーアウトすると、説明が重複しているように見えます。次に例を示します。

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>';
    }

    ?>

これが動作するのを見たい人のために、URL は次のとおりです: http://php-playground.co.cc/testdir/metaex.php

PS

チェックボックスが機能していないことは知っていますが、それらはレイアウトのためだけにあります

4

3 に答える 3

1

メタ タグをループしており、メタ タグごとに説明をエコーアウトしています。

ループを取り除きます。

于 2012-04-11T12:04:47.867 に答える
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>';
    }

    ?>

2 番目の for ループが削除されていることに注意してください。

于 2012-04-11T12:05:13.683 に答える
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>';
}

これがお役に立てば幸いです。

于 2012-04-11T12:06:33.787 に答える