[英]replacing characters with escape in a javascript string
我知道必須有成千上萬的這樣的線程,但互聯網和堆棧溢出充斥着其他編程語言的結果,只需用空格替換字符等等......
所以...我的問題如下......
我有一個表單: <input type='text' id='my_input'>
然后我用javascript(用jquery)解析我的所有字段來創建我的ajax調用,就像這樣
var my_value = $('#my_input').val();
然后我做一個替換來獲得換行符my_value = my_value.replace('\\n', '<br>');
之后,我用ajax發布我的變量,如下所示:
data_to_post = 'my_field1=' + my_value1 + 'my_field2' + my_value2;
$.ajax({
type: 'POST',
url: '/write_to_db.php',
data: data_to_post
});
現在很多人在我的網站上談論編程和內容開始搞砸了我的網站,因為他們的帖子內容被解析為php或html格式 - 我打算替換所有有問題的字符,可能搞砸了我的網站的代碼。
最有問題的表達式是html標簽和&=因為它干擾了我將post變量放在一起的方式。
現在,因為這些字符是內容所必需的,所以我不能簡單地用一個字符替換它們。
有什么方法可以逃脫它們(最好是在一行命令中)?
謝謝!
更新:我的臨時解決方案是:
this_string = this_string.replace(/</g, '<');
this_string = this_string.replace(/>/g, '>');
this_string = this_string.replace(/\n/g, '<br>');
this_string = escape(this_string);
我會在表單元素本身上使用$ .serializeJSON()來收集整個表單的所有值。 然后我會通過AJAX調用將其發送到服務器端腳本。 解析復雜注釋或文本字段(允許代碼和純文本)這樣的任務最好留給服務器端語言。
嘗試javascript函數escape(): http : //www.w3schools.com/jsref/jsref_escape.asp
data_to_post = 'my_field1=' + escape(my_value1) + 'my_field2' + escape(my_value2);
編輯:
要處理人們不允許發布的HTML字符,你可以用php:
$outputstring = "hi<br />bye!";
echo htmlspecialchars($outputstring);
有關如何工作的信息: http : //php.net/manual/en/function.htmlspecialchars.php
怎么樣:
my_value = my_value.replace(/\n|\.|\~/g, '<br>');
把你的角色替換為| (或)分隔符,並在末尾有/ g標志
盡管您的意圖並不完全清楚,但您可以保留程序員的內容,並通過將表達式包裝在標記中來顯示回車符/換行符。
另一種可能性是使用CSS來設計外觀樣式。 看一下這篇文章的答案: 如何更換某些回車換行符,然后換一個帶有字母的短划線?
聽起來您只是想編碼HTML字符以保留HTML字符,因此如果是這種情況,以下內容將正確編碼文本:
var textVal = $('#my_input').val();
var encoded = $('<div/>').text(textVal).html();
這會創建一個內存中的div來幫助編碼。 要解碼,您只需將div調用更改為:
var unencoded = $('<div/>').html(textVal).text()
您是否考慮過在以下示例中為您處理PHP?
nl2br(htmlspecialchars($str,ENT_QUOTES,'UTF-8'));
$.ajax({
type: 'POST',
url: '/write_to_db.php',
data: {
'my_field1': my_value1,
'my_field2': my_value2
}
});
傳遞數據中的對象而不是字符串,jquery為您執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.