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-настроек.
Очередные вызовы функции будут сохранять все дополнительные
пары имя/значение до тех пор, пока обработчик не будет отключен.
Когда буфер вывода сбрасывается
(вызовом функций ob_flush(), ob_end_flush(),
ob_get_flush() или в конце работы скрипта),
обработчик «URL-Rewriter»
добавляет в атрибуты HTML-тегов пары имя/значение
в качестве параметров запроса для URL-адресов
и скрытые поля на основе значений директив конфигурации
url_rewriter.tags
и url_rewriter.hosts в формы.
Каждая пара имя/значение, добавленная в обработчик «URL-Rewriter»
,
будет добавлена в URL-адреса и/или формы,
даже если это приведёт к дублированию URL-параметров запроса
или элементов с одинаковыми названиями атрибутов.
Замечание: После отключения обработчика
«URL-Rewriter»
его невозможно запустить снова.
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(), использовали общий буфер вывода с поддержкой прозрачного идентификатора сессии (смотрите описание директивы 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">ссылка</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 )
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>