Как помешать php заменить стоп на пробел?

У меня есть функция, как WIKI ссылка

function bbcode($text)
{
$patterns = array
(
'|\[\[(.*?)\|(.*?)\]\]|i',
);
$replacements = array
(
'<a href=?word=\1>\2</a>',
);
$text = str_replace("\n", '<br>', trim($text));
$text = preg_replace($patterns, $replacements, $text);
return $text;
}

Но когда я использую f.e.

[[бла бла | текстовый текст]]

моя ссылка выглядит:

mypage.php? слово = бла

но я хочу

mypage.php? word = бла бла

где проблема с этой строкой «бла бла» с пробелом? Как это предотвратить?

0

Решение

'<a href=?word=\1>\2</a>'

Должно быть

'<a href="?word=\1">\2</a>'

Как и без пробелов, в этом случае синтаксический анализатор HTML будет предполагать, что вы определяете атрибут «bla» для привязки.

Имейте в виду, что это базовый пример, и эта реализация уязвима для эксплойтов XSS, если вы еще не очистили $bbcode ввод с помощью htmlspecialchars () и др.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]