Замена всех значений любых слов, заключенных в скобки, в строке
Обычно я довольно эффективно решаю проблемы PHP самостоятельно, однако с этой конкретной проблемой я, похоже, не могу найти рабочего решения.
У меня есть строка $, которая состоит из стандартного текста, и в тексте будут определенные ключевые слова, заключенные в [квадратные скобки], которые я хочу преобразовать в ссылки, однако это не простой случай сравнения строки с предопределенным массивом "известных" ключевых слов и выполнения простой замены, потому что содержимое [квадратных скобок] не может быть преобразовано в ссылки. скобки] может быть что угодно.
Например, мне понадобится следующее:
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>.
Следует отметить, что:
- Строка $ будет содержать неизвестное количество [слов в квадратных скобках].
- Использование квадратных скобок не обязательно, если это вызовет проблемы, но на данный момент это кажется мне наиболее удобным методом.
Я не прошу кого-то дать мне код, все, что мне нужно, это чтобы кто-то сказал мне, что вид функции PHP, которую я должен исследовать и указать мне в правильном направлении!
Большое вам всем спасибо, и спасибо Stackoverflow за то, что дали мне возможность спросить!
1 answers
$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>.