javascript - PHP正則替換問題

來源:互聯網
上載者:User

js下正則是這樣的:

var str = "data\/ui_inner\/74\/";str.replace(/\\/,"");

php如下這樣寫卻不對:

$auto_url = preg_replace('/\\/','', $str);

我的目的是替換字串中的\為空白,請問如何替換呢?

按照樓下的答案試了試還是不行呢。。

找到原因了,是因為json_encode()導致的,請問如何解決呢?我去google一下

回複內容:

js下正則是這樣的:

var str = "data\/ui_inner\/74\/";str.replace(/\\/,"");

php如下這樣寫卻不對:

$auto_url = preg_replace('/\\/','', $str);

我的目的是替換字串中的\為空白,請問如何替換呢?

按照樓下的答案試了試還是不行呢。。

找到原因了,是因為json_encode()導致的,請問如何解決呢?我去google一下

除非樓主有潔癖, 否則不建議再去對 json_encode 的結果進行替換, 因為 json_encode/ 進行轉義輸出, 對於js來說, 它的內容 還是 /, 而不是 \/.

(PS:下面在測試的時候有注釋代碼裡的var_dump, 只保留echo)
替換的:

不替換的:

1.html 的代碼如下:

PHP中提供了一個函數 preg_quote

string preg_quote ( string $str [, string $delimiter = NULL ] )

preg_quote()需要參數 str 並向其中 每個Regex文法中的字元前增加一個反斜線。 這通常用於你有一些運行時字串 需要作為Regex進行匹配的時候。

Regex特殊字元有: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

所以以上代碼可以這樣寫

應該這麼寫

$auto_url = preg_replace('/\\\\/','', $str);

也是剛學到,因為在字串中,'\'也是轉義,'/\\/'就變成了'/\/',所以要四個。
也可以用str_replace

$auto_url = str_replace('\\','', $str);

PHP的單引號中仍然會轉義\
所以你需要這麼做

$auto_url = preg_replace('/\\\\/', '', "data\/ui_inner\/74\/");

改成四個\\\\

直接對json做正則替換是不安全的,因為如果商務邏輯有改變,你可能意外修改了其他的域,建議先decode之後修改好之後再重新encode

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.