[英]echo php variable string cut off after ampersand
我從另一頁上的輸入表單將s
變量提交給page.php。
URL包含帶有&符的完整字符串,當我嘗試回顯該變量時,該字符串在&符之后被截斷。
形成:
<form action="page.php" method="get">
<input type="text" name="s" id ="s" />
</form>
變量是:
search & search
網址:
page.php?s=search+%26+search&var2=variable
變量回顯為:
search
我努力了:
echo htmlspecialchars($_GET['s']);
echo htmlentities($_GET['s']);
echo urldecode($_GET['s']);
您可以(至少)使用3種不同的方式來歸檔此文件:
1- urlencode()
:在您應該生成url來編碼URL格式字符串的地方使用此函數。
2-使用%26
(不帶“ +”號);
3-使用$_SERVER['QUERY_STRING']
:如果只有一個參數,則可以通過這種方式獲取所有query_string。
更新:
IE瀏覽器:
$url = "page.php?s=".urlencode('search & search')."&var2=".urlencode('variable'); //or urlencode($variable)
然后使用:urldecode()解析差異$ _GETs。
我假設您有類似的代碼,
<a href="http://localhost/example/page.php?s=search+%26+search">
嘗試回顯search
后,只會產生這種search
。
試試這個
<a href="http://localhost/example/page.php?s=<?php echo urlencode("search+%26+search") ?>">
這是對網址的查詢部分進行編碼的一種便捷方法。
並嘗試這個,一個來自官方php文檔的例子
<?php $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
有關更多信息,請參閱此。 http://php.net/manual/zh/function.urlencode.php
我只是嘗試了您說的內容,而問題似乎並不是url的編碼。
試試看https://www.google.co.in/?q=search+%26+search ,谷歌搜索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上調試代碼,嘗試在其中回顯變量或將整個代碼粘貼到此處。
盡管我在本地測試,也可以嘗試一下,這是代碼
<!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
我也嘗試粘貼網址
page.php?s=search+%26+search&var2=variable&name=submit
我得到相同的結果
我希望這會有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.