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', '&');
?>
output_add_rewrite_var
(PHP 4 >= 4.3.0, PHP 5)
output_add_rewrite_var — URL リライタの値を追加する
説明
bool output_add_rewrite_var
( string
$name
, string $value
)この関数は、URL リライト機構に新しい名前/値の組を追加します。 名前および値は、URL (GET パラメータとして) およびフォーム (hidden フィールドとして) で追加されます。これは、session.use_trans_sid で透過的 URL リライティングが有効になっている場合に セッション ID が渡される方法と同じです。 絶対 URL (http://example.com/..) はリライトされないことに注意しましょう。
この関数の挙動は、php.ini パラメータ url_rewriter.tags によって制御されます。
注意: もし出力バッファリングが有効になっていない場合、この関数を コールすると出力バッファリングが暗黙的に開始されます。
パラメータ
-
name -
変数名。
-
value -
変数の値。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例1 output_add_rewrite_var() の例
<?php
output_add_rewrite_var('var', 'value');
// リンク
echo '<a href="file.php">リンク</a>
<a href="http://example.com">リンク2</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">リンク</a>
<a href="http://example.com">リンク2</a>
<form action="script.php" method="post">
<input type="hidden" name="var" value="value" />
<input type="text" name="var2" />
</form>
Array
(
[0] => URL-Rewriter
)
参考
- output_reset_rewrite_vars() - URL リライタの値をリセットする
- ob_flush() - 出力バッファをフラッシュ(送信)する
- ob_list_handlers() - 使用中の出力ハンドラの一覧を取得する
Anonymous
20-Oct-2008 09:16
neo at nowhere dot com
26-Mar-2008 10:51
As a small side note, when there are values in the output_add_rewrite_var() function, these values are applied to all dynamic addresses (with in the limits posted above), including addresses that already have that variable set.
Example:
<?
output_add_rewrite_var("page", "admin");
echo '<a href="?a=signup&page=home">Signup</a>';
?>
The above will output the following:
<a href="?a=signup&page=home&page=admin">Signup</a>
However, this is easy to get around, using output buffering inside of output buffering. Because in my case, I couldn't remove the rewrite variable, as I have no idea if the next address would need it or not.
Niko
24-Feb-2008 01:58
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>
Bruce
06-Sep-2007 07:54
Just to clarify...
session.use_trans_sid does NOT need to be enabled in order for output_add_rewrite_var() to work.
