For a completely valid XHTML document you have to set the arg_separator, use this before you use output-add-rewrite-var:
<?php
ini_set('arg_separator.input', '&');
ini_set('arg_separator.output', '&');
?>(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
output_add_rewrite_var — URL リライタの値を追加する
   この関数は、'URL-Rewriter'
   出力バッファハンドラをアクティブでない場合に開始します。
   その上で、name と value
   パラメータを保存し、バッファがフラッシュされた際には
   URL とフォームをini設定に基づいて書き換えます。
   後にこの関数をコールした場合は、ハンドラがオフになるまで name/value
   のペアをすべて保存します。
  
   (ob_flush(), ob_end_flush(),
   ob_get_flush() がコールされたり、
   スクリプトが終了する際) 出力バッファがフラッシュされると、
   'URL-Rewriter' ハンドラが name/value のペアを
   HTML タグの属性にある URL のクエリパラメータに追加します。
   そして url_rewriter.tags と
   url_rewriter.hosts
   設定ディレクティブの値に基づいて hidden フィールドをの値をフォームに追加します。
  
   'URL-Rewriter' のハンドラに追加された name/value
   ペアは、たとえ URL のクエリパラメータが重複したり、
   同じ名前の属性をもつ要素が発生したとしても、
   それぞれが URL やフォームに追加されます。
  
注意:
'URL-Rewriter'ハンドラがオフにされると、 再び値を保存することはできません。
PHP 8.4.0より前では、書き換えられるホストは url_rewriter.hosts ではなく session.trans_sid_hosts で設定されていました。
name変数名。
value変数の値。
| バージョン | 説明 | 
|---|---|
| 7.1.0 | PHP 7.1.0 以降では、専用の出力バッファを用いるようになりました。 url_rewriter.tags はただ関数の出力にだけ使われるようになり、 url_rewriter.hosts が追加されました。 PHP 7.1.0 より前のバージョンでは、 output_add_rewrite_var() で設定したリライト変数は、 透過的セッションID出力バッファと同じ出力バッファを共有していました。 (session.trans_sid_tags を参照ください) | 
例1 output_add_rewrite_var() の例
<?php
ini_set('url_rewriter.tags', 'a=href,form=');
output_add_rewrite_var('var', 'value');
// リンク
echo '<a href="file.php">link</a>
<a href="http://example.com">link2</a>';
// フォーム
echo '<form action="script.php" method="post">
<input type="text" name="var2" />
</form>';
print_r(ob_list_handlers());
?>上の例の出力は以下となります。
<a href="file.php?var=value">link</a>
<a href="http://example.com">link2</a>
<form action="script.php" method="post">
<input type="hidden" name="var" value="value" />
<input type="text" name="var2" />
</form>
Array
(
    [0] => URL-Rewriter
)
For a completely valid XHTML document you have to set the arg_separator, use this before you use output-add-rewrite-var:
<?php
ini_set('arg_separator.input', '&');
ini_set('arg_separator.output', '&');
?>This function also adds a parameter to <input type="image"> fields!
Example:
This code:
<?
output_add_rewrite_var ('var','value');
echo '<form action="" method="post">
        <input type="image" src="image.jpg" alt="go">
        </form>';
?>
will output something like this:
<form action="" method="post">
        <input type="hidden" name="var" value="value">
        <input type="image" src="image.jpg?var=value" alt="go">
        </form>