次のように、データベースから文字列として返されるphp値があります
"this, that, another, another"
そして、これらの文字列のそれぞれに個別のリンクをラップしようとしていますが、うまくいかないようです。for ループを試してみましたが、これは単なる情報の文字列であり、実際には機能しない情報の配列ではないためです。文字列の各値を一意のリンクでラップする方法はありますか?
次のように、データベースから文字列として返されるphp値があります
"this, that, another, another"
そして、これらの文字列のそれぞれに個別のリンクをラップしようとしていますが、うまくいかないようです。for ループを試してみましたが、これは単なる情報の文字列であり、実際には機能しない情報の配列ではないためです。文字列の各値を一意のリンクでラップする方法はありますか?
これを行う最も簡単な方法は、PHP のexplode()
関数を使用することです。PHP を使い始めると非常に便利になることがわかるので、ドキュメント ページを参照してください。特定のセパレーターを指定して、文字列を配列に分割できます。あなたの場合、これは,
. したがって、文字列を分割するには:
$string = 'this, that, another, another 2';
$parts = explode(', ', $string);
次に、foreach を使用して (再度、ドキュメントを確認してください)、各パーツを繰り返し処理し、それらをリンクにします。
foreach($parts as $part) {
echo '<a href="#">' . $part . "</a>\n";
}
ただし、for
ループでこれを行うことができます。文字列は配列のようにアクセスできるため、パーサー パターンを実装して、文字列を解析し、パーツを抽出し、リンクを作成できます。
// Initialize some vars that we'll need
$str = "this, that, another, another";
$output = ""; // final output
$buffer = ""; // buffer to hold current part
// Iterate over each character
for($i = 0; $i < strlen($str); $i++) {
// If the character is our separator
if($str[$i] === ',') {
// We've reached the end of this part, so add it to our output
$output .= '<a href="#">' . trim($buffer) . "</a>\n";
// clear it so we can start storing the next part
$buffer = "";
// and skip to the next character
continue;
}
// Otherwise, add the character to the buffer for the current part
$buffer .= $str[$i];
}
echo $output;
より良い方法は、このようにすることです
$string = "this, that, another, another";
$ex_string = explode(",",$string);
foreach($ex_string AS $item)
{
echo "<a href='#'>".$item."</a><br />";
}
最初に文字列を分解して、配列内の個々の単語を取得します。次に、単語にハイパーリンクを追加し、最後に内破します。
$string = "this, that, another, another";
$words = explode(",", $string);
$words[0] = <a href="#">$words[0]</a>
$words[1] = <a href="#">$words[1]</a>
..
$string = implode(",", $words);
for
ループを使用して、次のようなパターンに従うハイパーリンクを割り当てることもできます。
for ($i=0; $i<count($words); $i++) {
//assign URL for each word as its name or index
}