簡體   English   中英

在javascript字符串中用escape替換字符

[英]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, '&#60;');
this_string = this_string.replace(/>/g, '&#62;');
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.

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