滴答(dá)軟件(jiàn)

  • 首頁
  • 技(jì)術(shù)服務
  • 服務案例
  • 技(jì)術(shù)博客
    • 全部分(fēn)類
    • 軟件(jiàn)開(kāi)發
    • 微(wēi)信小(xiǎo)程序
    • ERP開(kāi)發
  • 項目詢價

【蘇州軟件(jiàn)開(kāi)發】php處理(lǐ)json值中的(de)雙引号

2019年(nián)1月(yuè)8日(rì)admin

蘇州軟件(jiàn)開(kāi)發根據最近(jìn)的(de)項目經曆總結出處理(l​₹¥•ǐ)json值中的(de)雙引号問(wèn)題。

我們都(dōu)隻json是(shì)鍵值對(duì)存儲的(de),php在解ε↕®₹析json字符串時(shí)直接使用(yòng)自(zì)帶的(de)函數(×←∏shù)json_decode($jsonString)即可(kě)實現(xiàn↕>∞),解析後的(de)是(shì)json對(duì)象,非常簡單;如(rú)果要(yà™≥☆o)轉成數(shù)組也(yě)很(hěn)簡單,多(₹©'duō)加個(gè)參數(shù),json_deφ₽←code($jsonString,true).

最近(jìn)在項目中遇到(dào)個(gè)  ≤json解析的(de)問(wèn)題,就σ‍♦∏(jiù)是(shì)json的(de)value (值)含有(yǒu)雙引号,因為(wèi)值的©₩(de)內(nèi)容是(shì)html代碼,按照(zhào)正常的(de)處理(l®÷ǐ)邏輯,雙引号在轉成json字符串時(shí)要(yào)進行(xíng)轉義,這(zhè)↑λ樣解析的(de)時(shí)候就(jiù)不(bù)會(huì)有₹∏(yǒu)問(wèn)題,但(dàn)是"α(shì)實際上(shàng)卻沒有(y₽∏ε≠ǒu)進行(xíng)轉義,從(cóng)而導緻json無法解析。因為(wèi)這(zhε≈è)是(shì)一(yī)個(gè)接口,我們無法預知(☆↓zhī)內(nèi)容的(de)多(duō)少(shǎo),所以必須要(&↕yào)徹底解決。問(wèn)題json 代碼如(rú)下(xiγ♣αà):

{...
"detail":"<img align="absδ"§±middle" src="https://img.demo.com/xxx/i1/325249 ‌∞5915/O1CN019CuEk71tZ7DJ0QcF6_!!3252495915.jpg">≤→$€;<img src="https://₩☆₹✔img.demo.com/xxx/i1/3252495915/O1CN01T7WRWm€∏¥1tZ7DUVCMd4_!!3252495915.jpg" align="absmid♥'‌dle">",
"count":"876",
...}

可(kě)以看(kàn)到(dào),鍵 “dγδ✔€etail”對(duì)應的(de)值雙引号內(nèi)還(hái)有(y>↑©ǒu)雙引号,現(xiàn)在需要(yào)把值內(nèi)的(de)雙≠"引号進行(xíng)轉義。

也(yě)曾百度解決辦法,但(dàn)是(sh​$&ì)大(dà)都(dōu)千篇一(yī)律,有♣±σΩ(yǒu)的(de)說(shuō)用(yòng)addslashes(),∏€≠↕但(dàn)是(shì)會(huì)破壞json格式,無法解決,也α∑∑(yě)有(yǒu)的(de)說(shuō)用(yòσ‍€ng)js處理(lǐ),但(dàn)是(shì)都(d" ©‌ōu)已沒有(yǒu)真正的(de)解決方法,所以隻能(néng)自(zì)己想€σ♦辦法解決。

首先想到(dào)的(de)是(shì)ε€"÷通(tōng)過正則表達式進行(xíng)處理(lǐ),但(dàn)是(shì)如(rú)何隻把上×‌→✔(shàng)面的(de)“detail”的(de)value部分(fēn)找出¥≥,然後把其中內(nèi)嵌的(de)雙引号進行(xíng)替換轉義,想✘≠γ了(le)很(hěn)多(duō)、也(yě)嘗試寫了(le)很(hěn)多(duō)​£↑δ正則表達式去(qù)處理(lǐ),但(dàn)是(shì"♦)都(dōu)不(bù)理(lǐ)想;最後想出了(le)個(gè)方案,還(h&₩λπái)是(shì)通(tōng)過正則,但(dàn)是✘σ(shì)采用(yòng)多(duō)個(gè)正則進行(xíng)♠' ≤配合的(de)方式,邏輯如(rú)下(x§♦☆☆ià):

1.全局正則替換雙引号,進行(xíng)轉義為(wèi)\”;

2.全局正則替換起始的(de)雙引号;

3.全局正則替換key和(hé)value之間(j♣₽αiān)的(de)雙引号;

4.全局正則替換key和(hé)value的(de)雙引号,value是($♣¶shì)數(shù)組;

5.全局正則替換key和(hé)value的(de)雙引号,value是(shìγ‍​)鍵值對(duì);

6.全局正則替換單行(xíng)結尾的(de)引号和(hé)逗号;

7.替換單行(xíng)結尾的(de)引号;

通(tōng)過以上(shàng)7步即可(kě)實現(xiàn)value中雙引号轉義,而不••™δ(bù)破壞json格式,json可(kě)以正常解析,此''方法經多(duō)次測試,完全沒有(yǒu)問(wèn)題,具體(tǐ)代碼如(r‌•ú)下(xià):

function escapeDoubleQuote($γ•data){
    $data = pre≠↑®<g_replace('/\"/','\\\\"', $data);            ₩₽//所有(yǒu)的(de)雙引号進行(xíng)轉義
    $data = ♠φ÷preg_replace('/\s\\\"/','"', €ε‌$data);            //替換起始的(de)雙引号
    $data = p≈$ reg_replace('/\\\":\\\"/',₹≈♣×'":"', $data);       //替換key和(hé)value之間(jiān)的(dπ∞$e)雙引号
    $data = preg_replace("§'/\\\":\[/','":[', $data);  ♠↓£       //替換key和(hé)value的(de)雙引号¥φ✔ ,value是(shì)數(shù)組
    $data = preg_replace('/± β\\\":\{/','":{', $data);        ₩✘ //替換key和(hé)value的(dφ×♣e)雙引号,value是(shì)鍵值對(duì)
    $data = pr§‌eg_replace('/\\\",/','", ​↑<', $data);            //替換單行(xíng)結尾φ♣σ的(de)引号和(hé)逗号
    $data = preg_≥↑αreplace("/\\\\\"\s*\n/","\"\n", $da'∏φta);    //替換單行(xíng)結尾的(de)引号
    $data = jsoε•n_decode($data,true);
∏≈α↑
    return $data;
}

為(wèi)了(le)解決這(zhè)個(gè)問(wèn)題,花(huā)了↔♥(le)我們不(bù)少(shǎo)時(s✔₽↕‍hí)間(jiān)去(qù)思考,才想出這(zhè)個(gè)解決方案,∏÷為(wèi)了(le)幫助有(yǒu)需要(yào)的(de)人( γ×​rén),現(xiàn)在分(fēn)享給÷​→大(dà)家(jiā),歡迎轉載讓更多(duō)人(rén)知(∞ zhī)道(dào)。

此文(wén)為(wèi)技(jì)術(shù)人(rén)員(yuán)原創,如(rú)需轉載€≥請(qǐng)注明(míng)出處:蘇州滴答(dá)軟件(jiàn)科(kē)技(jìΩ↓↓)–技(jì)術(shù)博客, 出處網址:/2019/01/08/ph✘∞‌'pchulijsonzhizhongdeshuan↑✘₹εgyinhaoyinhao/

标簽: 蘇州軟件(jiàn)開(kāi)發公司
上(shàng)一(yī)篇 【蘇州小(xiǎo)程序開(kāi)發】寒假班怎麽招生(shēng)?
下(xià)一(yī)篇 【蘇州小(xiǎo)程序開(kāi)發】小(xiǎo)病自(∏€ zì)醫(yī)小(xiǎo)程序核心使用(yòng)人(rén)群

近(jìn)期文(wén)章(zhāng)

  • 化(huà)妝品企業(yè)如(rú)何使用(yòng)ERP系統提升企業(yè)利潤
  • 公司的(de)信息化(huà)系統對(du✘"∞'ì)公司業(yè)務有(yǒu)哪些(xiē)幫助
  • 軟件(jiàn)項目開(kāi)發的(de)流程有(yǒu)哪些(xiē)
  • 如(rú)何選擇專業(yè)的(de)軟件(jiàn)開(kā★♥∞ i)發公司
  • 如(rú)何設計(jì)一(yī)款符合公司業(yè)務的(de)CRM系統

分(fēn)類目錄

  • ERP定制(zhì)開(kāi)發 (73)
  • Social Marketing (1)
  • Web Design (1)
  • 公司産品 (9)
  • 婚紗攝影(yǐng)小(xiǎo)程序 (2)
  • 小(xiǎo)程序開(kāi)發公司 (30)
  • 微(wēi)信公衆号 (12)
  • 微(wēi)信小(xiǎo)程序 (161)
  • 技(jì)術(shù)分(fēn)享 (11)
  • 民(mín)宿小(xiǎo)程序 (1)
  • 熱(rè)點資訊 (9)
  • 網站(zhàn)開(kāi)發 (3)
  • 蘇州ERP開(kāi)發 (44)
  • 蘇州ERP開(kāi)發公司 (66)
  • 蘇州軟件(jiàn)外(wài)包企業(yè) (97)
  • 蘇州軟件(jiàn)定制(zhì)開(kāi)發 (103)
  • 蘇州軟件(jiàn)開(kāi)發公司 (98)
  • 行(xíng)業(yè)新聞 (4)
  • 軟件(jiàn)開(kāi)發 (200)
  • 默認分(fēn)類 (27)

文(wén)章(zhāng)歸檔

  • 2023年(nián)十二月(yuè) (1)
  • 2023年(nián)七月(yuè) (9)
  • 2023年(nián)六月(yuè) (9)
  • 2023年(nián)五月(yuè) (40)
  • 2023年(nián)四月(yuè) (30)
  • 2023年(nián)三月(yuè) (26)
  • 2023年(nián)二月(yuè) (13)
  • 2021年(nián)九月(yuè) (2)
  • 2021年(nián)八月(yuè) (4)
  • 2021年(nián)七月(yuè) (2)
  • 2020年(nián)十月(yuè) (1)
  • 2020年(nián)七月(yuè) (1)
  • 2020年(nián)六月(yuè) (1)
  • 2020年(nián)三月(yuè) (2)
  • 2019年(nián)十二月(yuè) (1)
  • 2019年(nián)十一(yī)月(yuè) (2)
  • 2019年(nián)十月(yuè) (10)
  • 2019年(nián)九月(yuè) (1)
  • 2019年(nián)八月(yuè) (23)
  • 2019年(nián)七月(yuè) (33)
  • 2019年(nián)六月(yuè) (24)
  • 2019年(nián)五月(yuè) (32)
  • 2019年(nián)四月(yuè) (19)
  • 2019年(nián)三月(yuè) (42)
  • 2019年(nián)二月(yuè) (29)
  • 2019年(nián)一(yī)月(yuè) (39)
  • 2018年(nián)十二月(yuè) (2)
  • 2018年(nián)十一(yī)月(yuè) (9)
  • 2018年(nián)十月(yuè) (3)
  • 2018年(nián)九月(yuè) (24)
  • 2018年(nián)八月(yuè) (8)
  • 2018年(nián)六月(yuè) (5)
  • 2018年(nián)五月(yuè) (3)
  • 2018年(nián)三月(yuè) (2)
  • 2018年(nián)一(yī)月(yuè) (3)
  • 2017年(nián)十二月(yuè) (5)
  • 2017年(nián)九月(yuè) (1)
  • 2016年(nián)四月(yuè) (1)

聯系我們

聯系郵箱:yzhu@didasoft.cn
服務熱(rè)線:0512-65693880
服務熱(rè)線:+86 155-0167-7862 (周一(yī)至周日(rì))
公司地(dì)址: 蘇州工(gōng)業(yè)園區(qū)©€•東(dōng)平街(jiē)299号歐瑞大(dà)廈320
工(gōng)作(zuò)時(shí)間(jiān): 09:00 - 18:00 ( 周一(yī)至周五 ε←₹₽)

友(yǒu)情鏈接

蘇州PHP開(kāi)發
蘇州APP開(kāi)發
微(wēi)信小(xiǎo)程序開(kāi)發
蘇州軟件(jiàn)開(kāi)發公司
小(xiǎo)程序制(zhì)作(zuò)開(kāi)發•γδ£

專業(yè) 高(gāo)效 誠信 價值

滴答(dá)軟件(jiàn)
  • 首頁
  • 技(jì)術(shù)博客
  • 項目詢價
  • FAQ問(wèn)答(dá)
版權所有(yǒu) © 2020 蘇州滴答軟件科技有限公司 京ICP證000000号

蘇公網安備 32059002004131号