PHP - 输出数组,转换为链接,字符串替换

时间:2016-05-04 09:05:00

标签: php arrays replace explode

我在数据库条目中有一个充满这样名字的数组:

Bob Smith, Bob Smith, Bob Smith, Bob Smith

我需要将数组输出到每个名称成为单个链接的位置,如下所示:

<a href="bob-smith.php">Bob Smith</a>, <a href="bob-smith.php">Bob Smith</a>, <a href="bob-smith.php">Bob Smith</a>, <a href="bob-smith.php">Bob Smith</a>

所以我需要仅从该数据库条目中的名称创建这些链接。有什么想法吗?

6 个答案:

答案 0 :(得分:2)

您可以通过以下简单方式完成:

<?php
    $as = array('Bob Smith', 'Bob Smith', 'Bob Smith', 'Bob Smith');
    $s = "";
    foreach ($as as $a)
        $s .= '<a href="', str_replace(" ", "-", strtolower($a)), '.php">', $a, '</a>, ';
    echo trim($s, ", ");
?>

更新了,修剪了逗号。我建议最好的方法是使用数组和implode

<?php
    $as = array('Bob Smith', 'Bob Smith', 'Bob Smith', 'Bob Smith');
    $s = array();
    foreach ($as as $a)
        $s[] = '<a href="', str_replace(" ", "-", strtolower($a)), '.php">', $a, '</a>, ';
    echo implode(", ", $s);
?>

答案 1 :(得分:2)

试试吧。

$name = 'Bob Smith, Bob Smith, Bob Smith, Bob Smith';

$arr = explode(", ", $name);

$out = array();
foreach($arr as $value){
    $link = strtolower(implode("-", explode(" ", $value)));
    $out[] = '<a href="'.$link.'.php">'.$value.'</a>';
}
$str = implode(", ", $out); 

如果现在我们回显$str,那么输出就是链接。无法查看标签。所以使用htmlspecialchars

结果

echo htmlspecialchars($str); // <a href="bob-smith.php">Bob Smith</a>, <a href="bob-smith.php">Bob Smith</a>, <a href="bob-smith.php">Bob Smith</a>, <a href="bob-smith.php">Bob Smith</a>

答案 2 :(得分:1)

尝试这样的事情

$names = array('Bob Smith', 'John Doe');
foreach ($names as $name) {

    echo '<a href="'. str_replace(' ', '-', strtolower($name)) .'.php">'. $name . '</a>';
}

答案 3 :(得分:1)

您可以使用明显的foreach或array_map:

<?php
$names = ['Bob Smith', 'Bob Smith', 'Bob Smith', 'Bob Smith'];
$links = array_map(function($name) {
    $url = strtolower(str_replace(' ', '-', $name)) . '.php';
    return '<a href="' . $url . '">' . $name . '</a>';
}, $names);
echo implode('<br/>', $links);

答案 4 :(得分:0)

使用简单的foreach:

$names = array('Steve Waugh', 'Mark Waugh', 'Adam Gilchrist');
$links = array();
if (! empty($names)) {
    foreach ($names as $name) {
        $urlTo = strtolower(str_replace(' ', '-', $name)) . '.php';
        $links[] = '<a href="'.$urlTo.'">' . $name . '</a>';
    }
}
echo '<pre>';print_r($links);echo '</pre>';

<强>输出:

Array
(
    [0] => <a href="steve-waugh.php">Steve Waugh</a>
    [1] => <a href="mark-waugh.php">Mark Waugh</a>
    [2] => <a href="adam-gilchrist.php">Adam Gilchrist</a>
)

答案 5 :(得分:0)

<?php
$names = array('Bob Smith', 'John Smith');
foreach ($names as $name) {
  echo preg_replace(array("#[\s-]+#"), array("-"), trim(strtolower($name))).'.php';
}
?>