PHPバージョン
4+
// 次のページに渡す変数の値
$search = 'hello world!';

// URLクエリ値としてエンコード
$encodedSearch = urlencode($search);

// エンコードした値をクエリ文字列に含める
$url = 'https://example.com/search.php?q=' . $encodedSearch;

echo $url;
// 出力: 'https://example.com/search.php?q=hello+world%21'
urlencode(string $string): string
$userinput = 'Data123!@-_ +';
echo "UserInput: $userinput\n";
echo '<a href="mycgi?foo=' . urlencode($userinput) . '">';

/* 出力:
'UserInput: Data123!@-_ +'
'<a href="mycgi?foo=Data123%21%40-_+%2B">'
*/
$name = '山田太郎';
$age = 20;
$query_string = 'name=' . urlencode($name) . '&age=' . urlencode($age);

$url = "https://example.com/?$query_string";
echo $url;

// 出力: 'https://example.com/?name=%E5%B1%B1%E7%94%B0%E5%A4%AA%E9%83%8E&age=20'