1

我有一个从我的数据库作为字符串返回的 php 值,比如

"this, that, another, another"

而且我正在尝试围绕每个字符串包装一个单独的链接,但我似乎无法让它工作。我尝试了一个 for 循环,但因为它只是一串信息,而不是一组实际上不起作用的信息。有没有办法在我的字符串中的每个值周围包装一个唯一的链接?

4

3 回答 3

2

我看到的最简单的方法是使用 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;

键盘演示

于 2013-06-18T02:58:45.970 回答
1

首先分解字符串以获取数组中的单个单词。然后将超链接添加到单词并最终将它们内

$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
}
于 2013-06-18T02:50:31.923 回答
1

更好的方法是这样做

$string = "this, that, another, another";
$ex_string = explode(",",$string);

foreach($ex_string AS $item)
{
   echo "<a href='#'>".$item."</a><br />";
}
于 2013-06-18T02:58:22.227 回答