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, ", ");
?>
已更新,删除了尾随逗号。我建议最好的方法是使用数组并 implode
ing 它们。
<?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);
我在数据库条目中有一个充满名称的数组:
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, ", ");
?>
已更新,删除了尾随逗号。我建议最好的方法是使用数组并 implode
ing 它们。
<?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);