2012-04-11 6 views
0

Wenn statt der anderen sie die Beschreibung nur zu entfernen, zum Beispiel duplizieren zu sein scheint Meta-Tags alle echo'ed aus:Meta Beschreibung Duplizierung, wenn get_meta_tags Funktion verwenden, wollen nur die Beschreibung

BBC 13 verschiedene Meta hat Tags, wenn ich nur die Beschreibung in meinem Skript ausspreche, wird es 13 mal dupliziert.

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

    ?> 

Hier ist die URL Incase jemand daran zu arbeiten sehen wollte: http://php-playground.co.cc/testdir/metaex.php

PS

Ich weiß, dass die Kontrollkästchen nicht arbeiten, sie sind da nur für das Layout

Antwort

1

Ich denke, das ist, was Sie zu tun versuchen:

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

    ?> 

Sie werden bemerken, dass die zweite for-Schleife entfernt haben.

+0

Ok das ist gut danke! Wenn Sie jetzt nur ein Problem bekommen, können Sie es hier sehen: http://php-playground.co.cc/testdir/metaex.php – RuFFCuT

+0

Ok, egal, ich habe es versehentlich dupliziert! – RuFFCuT

+0

Danke für die Hilfe :) – RuFFCuT

1

Du looping über die Meta-Tags und für jedes Meta-Tag Sie Echo der Beschreibung.

Loswerden der Schleife.

+0

Aber wenn ich den _italic_foreach_italic_ Teil entfernen, funktioniert es nicht: -/ – RuFFCuT

0

Wenn Sie foreach mit Referenzen zu verwenden, es ist gute Praxis, dass der Bezug nach der Schleife zu entfernen:

foreach ($TAarray as $key => &$line) 
{ 
    $line = trim($line); 
} 
unset($line); # remove the reference for safety reasons 

Aber wie Sie nicht über $TAarray nach diesem Code durchlaufen haben, wird der Code ist sowieso überflüssig. Schreibe keinen überflüssigen Code. Ich schlage vor, die folgenden:

//make the array 
$TAarray = explode("\n", strip_tags($_POST['TAData'])); 
$TAarray = array_map('trim', $TAarray); 

Und ich schlage vor, dass setzen in Abhängigkeit von seiner eigenen:

/** 
* @param string $html 
* @return string[] lines 
*/ 
function getTrimmedTextLinesArrayFromHTMLBlock($html) 
{ 
    $text = strip_tags($html); 
    $lines = explode("\n", $text); 
    $trimmed = array_map('trim', $lines); 
    return $trimmed; 
} 

Sie können dann verwenden, wo immer Sie möchten. Sie können diese Funktion auch unabhängig mit einem anderen Eingang testen:

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

Ich hoffe, das ist hilfreich.

Verwandte Themen