2016-05-04 5 views
-1

を交換し、リンクに変換:私は出力にそれぞれの名前のような個々のリンクになりどこに配列を必要とするPHP - 出力配列、文字列は、私はデータベースのエントリでは、このような名前の完全な配列持ち

Bob Smith, Bob Smith, Bob Smith, Bob Smith 

をso:

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

更新

+3

あなたがしようとしているものを私たちを見る、それはシンプルながら、/ foreachループのように聞こえます。 – Epodax

+0

「Bob Smith」と「Bob Smith」を区別しません。それは違いを生む名前が発生する可能性があります。 'urlencode'やアンダースコアも考慮してください。 –

答えて

2

ちょうどこれを試して

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

これは出力にコンマを含めた最初の実用的な答えでした。みんなありがとう! – user1610904

2

あなたは次のように簡単な方法でそれを行うことができます。私は、最良の方法は配列を使用して、implodeを使用することをお勧めします。

$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> 
) 
+0

実際に最後のリンクの後にカンマが多すぎます; P –

+0

@AndreasLinden正しくチェックされていますか? –

+0

私はちょうどコンマを編集しました... – Poiz

1

この

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

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

実際、OPが望んでいるものと同じではありません。 '; P' –

0

使用簡単なforeachのような何かを試してみてください。今、私たちは$strをエコー場合

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

出力は、リンクです。タグは表示できません。したがって、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> 
0
<?php 
$names = array('Bob Smith', 'John Smith'); 
foreach ($names as $name) { 
    echo preg_replace(array("#[\s-]+#"), array("-"), trim(strtolower($name))).'.php'; 
} 
?> 
+0

ランダムなコードを貼り付けるのではなく、あなたがしたこととその理由を説明してください。そうすれば、同じ問題を抱えているOPや将来の読者は、実際にそれをコピーして貼り付けるのではなく、明日も同じ質問をするだけで、あなたの答えから何かを実際に学ぶことができます。 – Oldskool

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); 
関連する問題