2012-04-11 51 views
0

當的只是移除所有這似乎是重複的描述其他的meta標籤,例如echo'ed出來,而不是描述:使用get_meta_tags功能時複製元描述,只希望

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

我知道複選框工作不只是那裏的佈局

回答

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循環。

+0

好吧,這是好的,謝謝!現在只有一個問題,請你可以在這裏看到:http://php-playground.co.cc/testdir/metaex.php – RuFFCuT 2012-04-11 12:12:14

+0

好吧,沒關係,我無意中複製了它! – RuFFCuT 2012-04-11 12:13:49

+0

感謝您的幫助:) – RuFFCuT 2012-04-11 12:13:57

1

你循環在meta標籤上,爲每個元標籤您正在迴應說明。

擺脫循環。

+0

但是,當我刪除_italic_foreach_italic_部分它不起作用: -/ – RuFFCuT 2012-04-11 12:06:15

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

我希望這會有所幫助。