簡體   English   中英

有人可以告訴我如何在PHP中轉義“&”符號嗎?

[英]Can someone please tell me how to escape an ampersand in PHP?

我有一個所見即所得的編輯器,即將我的&字符從&更改為&

提交數據時會發生的情況是,&之后的所有內容都將被刪除,而之前的所有內容將保持不變。 不久前我問了這個問題,但似乎找不到答案。 我們以為可能是編輯器,但是我驗證了&符號在提交后正在轉換。 有沒有一個PHP函數,可以擺脫這些ASCII字符?

聽起來好像未正確進行urlencode。 您是自己構建請求(例如使用AJAX)嗎?

根據您使用的AJAX庫(如果有),您可能需要手動轉義數據:

想象您的編輯器包含“ Beans&sausages”。 您將其發布在變量“文本”中:

text=Beans&sausages

這看起來像PHP

text = Beans
sausages = null

在Javascript中,使用encodeURIComponent()可以解決此問題。

您能夠在提交原始內容時使用print_r()來驗證PHP是否正在獲取整個字符串?

如果您的編輯器把它砍掉了,那么在涉及PHP之前是一個問題。

我認為這里的問題出在別處,因為編輯器所做的工作絕對正確。 我建議檢查一下PHP接收到的值($ _REQUEST數組中的值),如果缺少字符,請檢查通過網絡發送的POST或GET請求(即使用firebug或類似工具)。 我認為該值發送之前已被破壞。

也許在您的文本上是否正在調用htmlentities函數? 您可以使用html_entity_decode進行解碼。 盡管已經閱讀了大多數答復和您的問題,但我將看一下提交AJAX的代碼,您很可能需要先在javascript中對該字符串進行urlencode,然后再將其作為發布數據傳遞。 大多數圖書館都會為您處理。 如果您手動組裝數據,則應在數據上調用函數encodeURIComponent

var postData = encodeURIComponent(key) + '=' + encodeURIComponent(value).replace(/%20/g,'+');

我在您的評論之一中注意到您正在使用jQuery函數。 jQuery有一個名為$.param()的輔助函數,它將為您編碼一個可發布的字符串,甚至更簡單的方法是將一個對象傳遞給ajax調用的data參數(內部將通過$.param()傳遞$.param()

$.ajax({
  method:'POST',
  url: '/somefile.php',
  data: {
    rt: $("textarea#rt").val(),
    Type: 1,
    //.... more data here
  },
  success: function(data) {
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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