URL リライタの値を追加する

# output_add_rewrite_var

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

output_add_rewrite_var — URL リライタの値を追加する

### 説明

function output_add_rewrite_var(string `$name`, string `$value`): bool

この関数は、`'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`

  変数の値。

### 戻り値

成功した場合に `true` を、失敗した場合に `false` を返します。

### 変更履歴

バージョン | 説明
--- | ---
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
    )

### 参考

- output_reset_rewrite_vars() - URL リライタの値をリセットする
- ob_flush() - アクティブな出力ハンドラの戻り値をフラッシュ(送信)する
- ob_list_handlers() - 使用中の出力ハンドラの一覧を取得する
- url_rewriter.tags
- url_rewriter.hosts

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open