當前位置:首頁 » 編程語言 » phpjson特殊字元

phpjson特殊字元

發布時間: 2022-05-26 03:03:57

php中json字元串轉對象問題

哈,是因為反斜杠 「\"的問題,在正則裡面,反斜杠用於匹配一個特殊字元,所以這里,你只寫了一個\反斜杠是不行的,如果你想匹配一個反斜杠,需要些兩個 \\。
其次是我感覺貌似你這個函數用的不合理,為什麼搜索值為空呢?為空的話,那麼這個函數就沒有任何意義啊。你看看是不是函數的參數順序寫錯了?
然後你的第二部分也很奇怪,json作為字元串 $stra = "" 裡面的內容要用雙引號括起來,字元串內部的雙引號要全部換成單引號才對。

② json中含有特殊字元串如何處理

1. 回車問題
JSON傳值的時候,如果有回車符就會掛的。我們可以使用正則來去掉回車符:
1 $str = preg_replace("'([\r\n])[\s]+'", "", $str);
2
3 // 不用正則
4 $str = str_replace("\n","",$str);
轉出來的字元串就沒有回車符的困擾了。
順便記錄一個PHP過濾腳本
01 <?php
02 // $document 應包含一個 HTML 文檔。
03 // 本例將去掉 HTML 標記,javascript 代碼
04 // 和空白字元。還會將一些通用的
05 // HTML 實體轉換成相應的文本。

③ php如何輸出中文json格式字元串

php如何輸出中文json格式字元串
如何對json格式的字元串進行轉換,php提供了兩個函數:
json_encode 對變數進行 JSON 編碼
json_decode 對 JSON 格式的字元串進行編碼

下面看個實例:
$arr = ['a', 'b', 'c'];echo json_encode($arr);

輸出為:
["a","b","c"]

但是,當我們在數組中放入中文的時候,就會出現問題:
$arr = [ '世界', '你好',
];echo json_encode($arr);

輸出的結果為:
["\u4e16\u754c","\u4f60\u597d"]

這個結果顯然不是我們想要的,但是為什麼出現這個呢?
因為當我們的值中包含中文時,php對他進行json編碼時底層會對中文進行unicode編碼,導致結果不可讀,那該怎麼解決呢?
方法一
可以利用 urlencode 和 urldecode 方法繞過這個轉碼為 unicode 的過程,先將中文欄位進行urlencode,然後json_encode,最後再用urldecode處理結果,便可以正常顯示中文。具體代碼如下:
$arr = [ '世界', '你好',
];echo urldecode(json_encode(array_map('urlencode', $arr)));

輸出結果為:
["世界","你好"]

方法二
自PHP5.4版本,官方就已經給Json新增了一個選項: JSON_UNESCAPED_UNICODE。加上這個選項後,就不會自動把中文編碼了。具體代碼如下:
$arr = [ '世界', '你好',
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
["世界","你好"]

看吧,這才是我們想要的結果 :)

④ php 處理json字元串

這個PHP 本身有二個函數 :
1. json_encode( array 或 object) 這個是用來把對象 或 數組轉換為 JSON格式數據;
2. json_decode(string , boolen[數組為true,對象不用設置]) 這個是把現有的JSON數據轉化為 PHP 數組或對象.
式例:
$a = array(1 => 'a', 2 => 'b', 3 => 'c', 4 => 'd');
$b = json_encode($a);
echo $b; // 這里得到字串 "{"1":"a","2":"b","3":"c","4":"d"}"
$c = json_decode($b, true);
var_mp($c); // 這里得到$a數組
如果JSON數據是一個數據, 轉化時建議把json_decode函數的第二個參數設為true, 對象則不用.
希望可以幫到你

⑤ PHP版本 5.4.31 json_decode 特殊字元怎麼處理,里邊有個冒號 就解析不出來了,也許還會有其他特殊字元

最簡單的辦法,使用php函數str_replace()查找冒號替換為空字元串或者用正則表達式匹配替換!!

⑥ php json_encode如何不編碼特殊字元,讓其顯示原始值

$arr = array( "renovação" ,"automática");
$res = array("res"=>$arr);
$res = json_encode($res, JSON_UNESCAPED_UNICODE);
echo $res;

⑦ json數據中欄位有特殊字元怎麼解決

展開全部
這個沒法解決,只能靠轉義
「\」,JSON最大的缺點就是這個,所以在開發的過程中,要注意特殊字元,在強類型語言中,第三方包會自己解決這些問題。比如Java就會自動反轉義。
最好的解決方式還是在開發過程中注意一點。
推薦個JSON在線解析工具給您。
1http://www.sojson.com

⑧ json特殊字元有哪些

1:引號 ,如果是使用單引號,來括值的話,那String 中 ' 單引號為特殊字元
2:正斜杠,反斜杠,換行符號等。另外,必須用 (") 而非 (') 表示字元串

⑨ php的json字元串轉化為json數據

你這個不就是json字元串么?

php裡面有2個函數:json_encode和json_decode

查一下手冊就可以解決了。

json_decode($str,true)可以得到數組,第二參數不加默認為false,得到對象。

⑩ 如何處理JSON中的特殊字元

JSON 是適用於 Ajax 應用程序的一種有效格式,原因是它使 JavaScript 對象和字元串值之間得以快速轉換。由於 Ajax
應用程序非常適合將純文本發送給伺服器端程序並對應地接收純文本,相比不能生成文本的 API,能生成文本的 API 自然更可取;而且,JSON 讓您能夠處理本地
JavaScript 對象,而無需為如何表示這些對象多費心思。

XML 也可以提供文本方面的類似益處,但用於將 JavaScript 對象轉換成 XML 的幾個現有 API 沒有 JSON API
成熟;有時,您必須在創建和處理 JavaScript 對象時格外謹慎以確保所進行的處理能與所選用的 XML 會話 API 協作。但對於
JSON,情況就大不相同:它能處理幾乎所有可能的對象類型,並會返回給您一個非常好的 JSON 數據表示。 因此,JSON 的最大價值在於可以將
JavaScript 真的作為 JavaScript 而非數據格式語言進行處理。

您所學到的所有有關使用 JavaScript 對象的技巧都可以應用到代碼中,而無需為如何將這些對象轉變成文本而多費心思。

1. 回車問題

JSON傳值的時候,如果有回車符就會掛的。我們可以使用正則來去掉回車符:

view
source
print?

1
$str = preg_replace("'([\r\n])[\s]+'", "", $str);

2

3
// 不用正則

4
$str = str_replace("\n","",$str);

轉出來的字元串就沒有回車符的困擾了。

順便記錄一個PHP過濾腳本:

view
source
print?

01
<?php

02
// $document 應包含一個 HTML 文檔。

03
// 本例將去掉 HTML 標記,javascript 代碼

04
// 和空白字元。還會將一些通用的

05
// HTML 實體轉換成相應的文本。

06

07
$search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript

08
"'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 標記

09
"'([\r\n])[\s]+'", // 去掉空白字元

10
"'&(quot|#34);'i", // 替換 HTML 實體

11
"'&(amp|#38);'i",

12
"'&(lt|#60);'i",

13
"'&(gt|#62);'i",

14
"'&(nbsp|#160);'i",

15
"'&(iexcl|#161);'i",

16
"'&(cent|#162);'i",

17
"'&(pound|#163);'i",

18
"'&(|#169);'i",

19
"'&#(\d+);'e"); // 作為 PHP 代碼運行

20

21
$replace = array ("",

22
"",

23
"\\1",

24
"\"",

25
"&",

26
"<",

27
">",

28
" ",

29
chr(161),

30
chr(162),

31
chr(163),

32
chr(169),

33
"chr(\\1)");

34

35
$text = preg_replace ($search, $replace, $document);

36
?>

2. HTML特殊字元

從伺服器端以JSON格式將數據傳遞到客戶端後,通過JS顯示在HTML頁面時,有一些特殊字元不能直接顯示,如後台傳遞過來的是
'<b>msg</b> #' 通過JS顯示在HTML頁面中時,顯示成了 msg # ,並不是msg
#,這是由於<與>之間的內容看作是HTML標簽了,而以&開頭的 與#為HTML實體,所以顯示不正常。

解決辦法很簡單,在JS將其渲染到HTML頁面前轉換一下即可:

view
source
print?

01
<script type="text/javascript">

02
var str = '<b>msg</b> #';

03
document.all.div1.innerHTML='<pre>'+str+'</pre>';

04

05
//js中的字元串正常顯示在HTML頁面中

06
String.prototype.displayHtml= function(){

07
//將字元串轉換成數組

08
var
strArr = this.split('');

09
//HTML頁面特殊字元顯示,空格本質不是,但多個空格時瀏覽器默認只顯示一個,所以替換

10
var
htmlChar="&<>";

11
for(var
i = 0; i< str.length;i++){

12
//查找是否含有特殊的HTML字元

13
if(htmlChar.indexOf(str.charAt(i)) !=-1){

14
//如果存在,則將它們轉換成對應的HTML實體

15
switch
(str.charAt(i)) {

16
case
'<':

17
strArr.splice(i,1,'<');

18
break;

19
case
'>':

20
strArr.splice(i,1,'>');

21
break;

22
case
'&':

23
strArr.splice(i,1,'&');

24
}

25
}

26
}

27
return
strArr.join('');

28
}

29
alert(str.displayHtml());

30
document.all.div2.innerHTML=str.displayHtml();

31
</script>

3. escape()函數

該函數可以處理空格、斜線和其他任何可能影響瀏覽器的內容,並將它們轉換成 Web 可用字元(比如,空格會被轉換成
%20,瀏覽器並不會將其視為空格處理,而是不做更改,將其直接傳遞到伺服器)。之後,伺服器會(通常自動)再把它們轉換回它們傳輸後的本來 「面目」。

view
source
print?

1
var url = "nowamagic.php?people="
+ escape(people.toJSONString());

2
request.open("GET", url, true);

3
request.onreadystatechange = updatePage;

4
request.send(null);

這種做法的缺點有兩個: 在使用 GET 請求發送大塊數據時,對 URL 字元串有長度限制。雖然這個限制很寬泛,但對象的 JSON
字元串表示的長度可能超出您的想像,尤其是在使用極其復雜的對象時更是如此。在跨網路以純文本發送所有數據的時候,發送數據面臨的不安全性超出了您的處理能力。

簡言之,以上是 GET 請求的兩個限制,而不是簡單的兩個與 JSON
數據相關的事情。在想要發送用戶名和姓之外的更多內容,比如表單中的選擇時,二者可能會需要多加註意。若要處理任何機密或極長的內容,可以使用 POST 請求。

4. 引號問題

JSON中如果包含引號或雙引號,會破壞JSON的格式。有兩種方法可以解決。

在入庫的時候可以使用addslashes()函數處理一下字元串,給引號前加上斜杠。被改的字元包括單引號 (')、雙引號 (")、反斜線 backslash
(\) 以及空字元NULL。

view
source
print?

1
$text = addslashes($text);

JavaScript的話,可以這樣:

view
source
print?

1
function valueReplace(v){

2
v=v.toString().replace(new
RegExp('(["\"])', 'g'),"\\\"");

3
return
v;

4
}

5
var eValue = encodeURI($.trim(valueReplace(e.value)))

熱點內容
eclipse查看jar包源碼 發布:2025-02-12 23:59:35 瀏覽:972
電腦主機伺服器維修 發布:2025-02-12 23:59:26 瀏覽:301
sqlserver標識 發布:2025-02-12 23:51:33 瀏覽:462
安卓怎麼玩地牢獵人 發布:2025-02-12 23:50:25 瀏覽:943
思鄉腳本 發布:2025-02-12 23:43:32 瀏覽:439
java的job 發布:2025-02-12 23:38:43 瀏覽:892
我的世界伺服器授權指令 發布:2025-02-12 23:30:13 瀏覽:596
電腦伺服器號在哪裡找 發布:2025-02-12 23:22:29 瀏覽:12
linux查看系統是32位 發布:2025-02-12 23:17:29 瀏覽:989
從資料庫中隨機取資料庫數據 發布:2025-02-12 23:17:25 瀏覽:878