簡體   English   中英

回音符后的PHP可變字符串被切斷

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM