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

PHP - Output array, Convert to links, String Replace

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

Bob Smith, Bob Smith, Bob Smith, Bob Smith

我需要将数组输出到每个名称都变成一个个体的位置 link,如下所示:

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

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

你可以用简单的方式来做到这一点:

<?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, ", ");
?>

已更新,删除了尾随逗号。我建议最好的方法是使用数组并 implodeing 它们。

<?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);
?>

尝试这样的事情

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

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

使用简单的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>
)

试试这个。

$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 那么输出是 link。标签不可见。所以使用 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>
<?php
$names = array('Bob Smith', 'John Smith');
foreach ($names as $name) {
  echo preg_replace(array("#[\s-]+#"), array("-"), trim(strtolower($name))).'.php';
}
?>

您可以使用明显的 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);