|
|
|
| тема тут была http://softtime.ru/forum/read.php?id_forum=1&id_theme=83629&page=1
в ней фигурирует следующий код:
<?
<a href=form.php?'.implode(" & ", $sql2).'&'.'zone='.$zone.'&class='.$class.'¢er='.$center.'&sea='.$sea.'&price='.$price.'&page='. ($page + 1) .'>Следующая</a>
?>
| Дальше разбор полетов и результат: ВСЕ РАБОТАЕТ.
Вопрос в следующем. Как ссылка с "&", а не "&" может работать? Интерпретатор как-то сам заменяет & на & где это необходимо? Как это настроить? Или же это просто наплевали на валидность кода в расчете что браузер сам как-нить разгребет? | |
|
|
|
|
|
|
|
для: Sfinks
(02.12.2011 в 01:44)
| | Вобще то переменные и делятся & а не & что вас не устраивает, технически именно так и должно быть, тут как раз все верно.
Или я не правильно вас понял? | |
|
|
|
|
|
|
|
для: Sfinks
(02.12.2011 в 01:44)
| | Символ & обычный символ, & - это требование XML и XML-подобных языков вроде XHTML. Более того, если засунуть & в header() - все перестанет работать: PHP понимает &, а & он прямо так и подставит в URL. | |
|
|
|
|
|
|
|
для: cheops
(02.12.2011 в 13:18)
| | Понятно. Прост у меня вап, а там только xml по стандартам и признается. И мне приходится самому везде следить за заменой & на & .Думал есть способ это поручить интерпретатору пхп, типа как он сам в гет запрос дописывает имя идентификатор сессии при включении use_trans_sid | |
|
|
|
|
|
|
|
для: Sfinks
(02.12.2011 в 18:18)
| | А есть такой способ... для этого достаточно в php.ini назначить директиве arg_separator.output соответствующее значение
arg_separator.output = "&"
|
Только в самом PHP-коде, при использовании header(), и других функций, следите, чтобы был просто & (а в браузер пойдет & - его, кстати, и в HTML не вредно использовать). | |
|
|
|
|
|
|
|
для: cheops
(02.12.2011 в 18:31)
| | Это включено. Оно влияет только на то, что сам пхп и дописывает, т.е. идентификатор сессии. Тут да, все корректно. Дописывает &sid=...
А вот если написать echo "<a href='file.php?a=1&b=2'>ссыль</a>", то в браузер так и приходит как написано.
Кстати одинарные кавычки, если они используются повсеместно, а не раз одинарные - раз двойные, то тоже автоматически заменяются на двойные.
> & - его, кстати, и в HTML не вредно использовать).
Я тоже так считаю. Я уж и забыл что в html можно использовать не его =) | |
|
|
|
|
|
|
|
для: Sfinks
(02.12.2011 в 19:43)
| | Можно такой процесс самому организовать, поместив все в буфер при помощи ob_-функций... даже интереснее можно сделать: отличать & от & и не производить повторное преобразование, если уже выводится & | |
|
|
|
|
|
|
|
для: cheops
(02.12.2011 в 19:58)
| | А поподробнее можно? Простейший пример какой-нить? Не пользовался этими функциями никогда.
Собственно проблемы-то нету.... У меня ссылки выводятся функцией
<?
function a($url,$text,$class=false){
return "<a".( $class ? " class=\"$class\"" : "" )." href=\"".str_replace("&","&",$url)."\">".$text."</a>";
}
?>
| и все нормально. Просто интересно стало какие еще интересные варианты могут быть.... Простите за тавтологию =) | |
|
|
|
|
|
|
|
для: Sfinks
(02.12.2011 в 20:28)
| | Смысл в том, что отправляем весь вывод не клиенту, а в буфер, потом получаем буфер и осуществляем в нем преобразования, а потом уже одним куском отправляем клиенту
<?php
// Весь вывод направляем в буфер
ob_start();
//.........(что там еще)........
// Тут код, который выводит информацию в окно браузера
//.........(что там еще)........
// Получаем содержимое буфера
$buffer = ob_get_contents();
// Очищаем буфер вывода и отключаем буферизацию вывода
ob_end_clean();
/////////////////////////////////////////////////////////////////
// Вот тут осуществляется замену & на &
/////////////////////////////////////////////////////////////////
// После замены отправляем данные клиенту
echo $buffer;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(02.12.2011 в 20:37)
| | О, здорово =) Это может быть полезно и в других ситуациях =) | |
|
|
|