2011-06-28 63 views
1

變量是這樣的:PHP:我如何從一個變量創建鏈接?

$keywords = 'key1, key2, key3, key4'; 

我怎樣才能創建像鏈接:使用PHP

<a href="../tag/key1">key1</a>, <a href="../tag/key2">key2</a>, <a href="../tag/key3">key3</a>, <a href="../tag/key4">key4</a> 


//編輯

如果什麼$與

$keywords = 'key1, keyword two, key3, key four'; 

甚至其他順序定義?

<a href="../tag/key1">key1</a>, <a href="../tag/keyword+two">keyword two</a>, <a href="../tag/key3">key3</a>, <a href="../tag/key+four">key four</a> 

我的意思是,如果「關鍵詞」之一,它是由兩個單詞組成的鏈接

怎麼能這樣已經完成它們之間添加一個「+」號?

+0

是'$ keywords'數組??? – Balanivash

+0

@Balanivash - 現在看起來像是一個字符串 – Neal

回答

6

嘗試了這一點:

foreach(explode(', ',$keywords) as $value){ 
    echo "<a href='../tag/$value'>$value</a>"; 
} 

要使用逗號做:

$keyArray = explode(', ',$keywords); 
$keyLength = count($keyArray); 
foreach($keyArray as $key=>$value){ 
    echo "<a href='../tag/$value'>$value</a>"; 
    if($key < ($keyLength - 1)){ 
      echo ", "; 
    } 
} 

更新到OP

$keyArray = explode(', ',$keywords); 
$keyLength = count($keyArray); 
foreach($keyArray as $key=>$value){ 
    echo "<a href='../tag/"; 
    $vArr = explode(' ', $value); 
    $vLength = count($vArr); 
    foreach($vArr as $kv=>$v){ 
     echo $v; 
     if($kv < ($vLength - 1)) echo "+"; 
    } 
    echo "'>$value</a>"; 
    if($key < ($keyLength - 1)){ 
      echo ", "; 
    } 
} 
+0

-1。不考慮逗號。 –

+0

我想你揍了我一秒!除了保存一條線以外,他們還有什麼好處,可以讓你在foreach內爆炸嗎? – Toby

+0

@TimCooper @TimCooper我添加了逗號,雖然我不知道爲什麼:-P – Neal

3

你想要做的第一件事是爆炸那個字符串。

$links = explode(',', $keywords); 

然後要循環吧...

for($counter = 0; $counter < sizeof($links); $counter++) { 
    if($counter > 0) { 
     echo ", "; 
    } 
    echo "<a href='../tag/".str_replace(' ', '+', trim($link[$counter]))."'>{$link[$counter]}</a>"; 
} 
+0

不再是它不; - ) – Toby

+0

@託比,現在它肯定做 – Neal

+0

不,所以第一次繞循環沒有逗號,然後每隔一段時間,直到循環結束''將以逗號開頭。 – Toby

1
<?php $keyword = explode(',',$keywords); ?> 
<a href="../tag/<?php echo $keyword[0]; ?>">key1</a> 
<a href="../tag/<?php echo $keyword[2]; ?>">key3</a> 
+0

...但它不是一個數組。看看OP ... – Neal

+0

@Neal:糾正它,謝謝:) – Balanivash

1

首先使用爆炸()到您的關鍵字字符串分割成一個數組

從那裏有許多的將數組轉換爲一系列或數組字符串的方法。您甚至可以使用implode將一組鏈接字符串帶回到單個字符串中。

1
<?php 

$keywords = 'key1, key2, key3, key4'; 

$vars = explode(',',$keywords); 
foreach($vars as $key => $value) 
{ 
    echo '<a href="'.$value.'" title="' . $value . '">'.$value.'</a><br/>'; 
} 
?> 
2

以下是更新到新的要求:

function keyword_url($arr) 
{ 
    return sprintf('%s<a href="../tag/%s">%s</a>', $arr[1], urlencode($arr[2]), $arr[2]); 
} 

$keywords = 'key1, key2 piece, key3, key4'; 
echo preg_replace_callback('/((?:^)|(?:, *))([\w ]+)/', 'keyword_url', $keywords); 
+0

如果關鍵字是'有趣的圖片',這是否解決了領先的空間問題? – Toby