PHP: Как я могу создать ссылки из переменной? - PullRequest
1 голос
/ 28 июня 2011

Переменная выглядит следующим образом:

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

Как создать ссылки типа:

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

с использованием php?


// Отредактировано

Что если $ определяется с помощью

$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>

Я имею в виду, если одно из «ключевых слов» образовано из двух словдобавить знак «+» между ними по ссылке

Как это можно сделать?

Ответы [ 6 ]

6 голосов
/ 28 июня 2011

Попробуйте это:

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 ", ";
    }
}
3 голосов
/ 28 июня 2011

Первое, что вы хотите сделать, это взорвать эту строку.

$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>";
}
2 голосов
/ 29 июня 2011

Следующее обновлено с учетом ваших новых требований:

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);
1 голос
/ 28 июня 2011
<?php

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

$vars = explode(',',$keywords);
foreach($vars as $key => $value)
{
    echo '<a href="'.$value.'" title="' . $value . '">'.$value.'</a><br/>';
}
?>
1 голос
/ 28 июня 2011

Сначала используйте explode (), чтобы разбить строку ключевого слова на массив

Оттуда есть несколько способов превратить массив в серию или массив строк.Вы можете даже использовать implode, чтобы вернуть массив строк ссылок обратно в одну строку.

1 голос
/ 28 июня 2011
 <?php  $keyword = explode(',',$keywords); ?> 
 <a href="../tag/<?php echo $keyword[0]; ?>">key1</a>
 <a href="../tag/<?php echo $keyword[2]; ?>">key3</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...