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


PHP - Output array, Convert to links, String Replace

我在数据库条目中有一个数组,里面充满了这样的名称:

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>

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

试试这个。

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

你可以用简单的方法来做,比如:

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

尝试类似的东西

$names = array('Bob Smith', 'John Doe');
foreach ($names as $name) {
    echo '<a href="'. str_replace(' ', '-', strtolower($name)) .'.php">'. $name . '</a>';
}

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

使用简单的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>
)
<?php
$names = array('Bob Smith', 'John Smith');
foreach ($names as $name) {
  echo preg_replace(array("#['s-]+#"), array("-"), trim(strtolower($name))).'.php';
}
?>