我通常可以自己解决PHP问题,但是对于这个特定问题,我似乎找不到可行的解决方案。
我有一个由标准文本组成的$string,在文本中会有某些被[方括号]包围的关键字,我想将其转换为链接,但是这不是将字符串与预定义的"已知"关键字数组进行比较并进行简单替换的简单情况,因为[方括号]的内容可以是任何东西。
例如,我需要以下内容:
John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include [A Gray Sky] and [Sophomore Effort].
应转换为以下内容:
John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include <a href="search.php?search=a+gray+sky">A Gray Sky</a> and <a href="search.php?search=sophomore+effort">Sophomore Effort</a>.
应该指出的是:
- $string将包含未知数量的 [括号内的单词]。
- 如果会引起问题,则不必使用方括号,但就目前而言,这似乎是最方便的方法。
不是要求别人给我代码,我所需要的只是有人告诉我应该研究什么样的PHP函数,并指出我正确的方向!
非常感谢大家,也感谢Stackoverflow给我机会提问!
$string = "John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include [A Gray Sky] and [Sophomore Effort].";
function rep_callback($match)
{
$query = substr($match[0],1,-1);
$query = urlencode($query);
$link = '<a href="search.php?search='.$query.'">'.$match[0].'</a>';
return $link;
}
echo $string."'n";
echo preg_replace_callback("/'[.+']/U", "rep_callback", $string)."'n";
输出:
John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include [A Gray Sky] and [Sophomore Effort].
John Roberts is a jazz musician from Florida born in 1934. Some of his notable works include <a href="search.php?search=A+Gray+Sky">[A Gray Sky]</a> and <a href="search.php?search=Sophomore+Effort">[Sophomore Effort]</a>.