Пример кода
<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>
Примечание: будьте внимательны с переменными, которые могут совпасть с элементами HTML. Мнемоники вроде &, © и £ разбираются браузером и используется реальная мнемоника, а не желаемое имся переменной. Это склока, которая тянется с W3C годами. Вот ссылка: http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2
PHP поддерживает изменение сепаратора аргументов на рекомендуемый W3C символ точка с запятой вместо .ini-директивы arg_separator. К сожалению, большинство пользовательских агентов не отправляют данные формы в формате с разделением точкой с запятой. Более переносимый способ - использовать & вместо & в качестве сепаратора. Вам не надо для этого изменять arg_separator РНР. Оставьте его как &, но просто кодируйте ваши URLs с помощью htmlentities()(urlencode($data)).
Пример кода
<?php
echo '<a href="mycgi?foo=', htmlentities(urlencode($userinput)), '">';
?>