эхо php переменная строка обрезается после амперсанда

Я представляю s переменная в page.php из формы ввода на другой странице.

URL содержит полную строку с амперсандом. Когда я пытаюсь отобразить переменную, строка обрезается после амперсанда.

форма:

<form action="page.php" method="get">

<input type="text" name="s" id ="s" />

</form>

Переменная это:

search & search

URL:

page.php?s=search+%26+search&var2=variable

переменные отражаются как:

search

Я пытался:

   echo htmlspecialchars($_GET['s']);
echo htmlentities($_GET['s']);
echo urldecode($_GET['s']);

0

Решение

Вы можете использовать (как минимум) 3 разных способа архивирования:

1 — urlencode(): используйте эту функцию там, где вы должны сгенерировать URL для кодирования строки для формата URL.

2 — использовать %26 (без «+»);

3 — Использование $_SERVER['QUERY_STRING']Если у вас есть только один параметр, вы можете получить все строки запроса таким образом.

ОБНОВИТЬ:

то есть:

$url = "page.php?s=".urlencode('search & search')."&var2=".urlencode('variable'); //or urlencode($variable)

Затем используйте: urldecode () для анализа различий $ _GET.

0

Другие решения

Я полагаю, у вас есть код, похожий на этот,

<a href="http://localhost/example/page.php?s=search+%26+search">

Такого рода, приведут только search после того, как вы попытаетесь повторить это.

Попробуйте так,

<a href="http://localhost/example/page.php?s=<?php echo urlencode("search+%26+search") ?>">

Это удобный способ кодирования части запроса в URL.

а также попробуйте этот пример из официальной документации php

<?php $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>

и для получения дополнительной информации, пожалуйста, обратитесь к этому.
http://php.net/manual/en/function.urlencode.php

0

Я только что попробовал то, что вы сказали, и проблема не в кодировке URL.

Попробуйте это https://www.google.co.in/?q=search+%26+search , Google ищет search & searchможет быть проблема на page.php где вы пытаетесь повторить переменную.

Кроме того, чтобы доказать, что Google не делает ничего особенного, я просто создал два файла с именами index.php и page.php, и результат оказался ожидаемым.

index.php

<html>
<body>
<form action="1.php" method="get">
<input type="text" name="s" id="s">
</form>
</body>
</html>

page.php

<?php
echo $_GET['s'];
?>

выход:
search & search

Попробуйте отладить свой код на page.php, где вы пытаетесь отобразить переменную, или вставьте сюда весь код.

0

Попробуйте это, хотя я проверяю это локально, вот код

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Problem</title>
</head>
<body>
<form action="page.php" method="get">
<input type="text" name="s" id ="s" />
<input type="text" name="var2" id ="d" />
<input type="submit" name="name" value="submit">
</form>
</body>
</html>

и page.php

<?php
if (isset($_GET['s'])) {
echo $_GET['s'] .' '. $_GET['var2'];
}
?>

когда вы запустите его в своем браузере, он отобразит две формы ввода и кнопку отправки.

Выход будет

search & search variable

Я пытаюсь также вставить в URL

page.php?s=search+%26+search&var2=variable&name=submit

Я результат тот же

Надеюсь это поможет

0