Làm cách nào để sử dụng thoát trong JavaScript?

Khi làm việc với chuỗi, bạn sẽ nhận thấy có một số ký tự dường như luôn phá vỡ chương trình của bạn. Chúng bao gồm dấu nháy đơn, dấu và, dấu ngoặc kép, v.v.

Khi làm việc với các ký tự này, bạn cần sử dụng ký tự được gọi là ký tự thoát. Một ký tự thoát cho phép bạn xuất các ký tự mà thông thường bạn không thể làm được, thường là do trình duyệt sẽ diễn giải ký tự đó theo cách khác với những gì bạn dự định

Trong JavaScript, dấu gạch chéo ngược (\) là một ký tự thoát

Ví dụ: giả sử tôi muốn hiển thị văn bản sau. Họ gọi đó là nhân vật "thoát"

Hãy thử điều đó mà không có ký tự thoát

Không có nhân vật trốn thoát

Đoạn mã trên sẽ không hoạt động như dự định vì ngay khi trình duyệt gặp dấu ngoặc kép đầu tiên, nó sẽ nghĩ rằng chuỗi đã kết thúc. Hơn nữa, nó sẽ dẫn đến lỗi vì nó sẽ mong đợi dấu ngoặc đóng

Mã có ký tự thoát

Đoạn mã trên sẽ hiển thị dấu ngoặc kép như dự định

Điều này là do, ngay khi trình duyệt gặp dấu gạch chéo ngược, nó sẽ biết không cố diễn giải ký tự tiếp theo

Mọi ngôn ngữ lập trình đều có các ký tự đặc biệt - các ký tự có ý nghĩa đặc biệt như xác định một biến, cuối dòng hoặc ngắt trong một số dữ liệu. JavaScript cũng không khác, vì vậy nó cung cấp một số chức năng mã hóa và giải mã các ký tự đặc biệt

Nếu bạn đang tương tác giữa PHP và JavaScript, bạn cũng cần phải làm quen với các hàm PHP để mã hóa và giải mã các ký tự đặc biệt, đó là lý do tại sao chúng tôi đã tạo công cụ đặc biệt này để thử nghiệm và so sánh các hàm khác nhau

Mã hóa và giải mã bằng JavaScript và PHP

Biểu mẫu bên dưới cho phép bạn xem đầu ra của các hàm khác nhau được sử dụng để mã hóa các ký tự đặc biệt khi chúng xuất hiện ở dạng văn bản thuần túy hoặc tham số URL (theo dấu '?' trong URL). Trang này gọi các hàm PHP trực tiếp bằng cách sử dụng Ajax thay vì mô phỏng JavaScript. Nếu bạn có một chuỗi để giải mã, hãy sử dụng các nút bên phải để thay thế

Các chức năng này thực hiện thay thế trên một số ký tự nhất định như được hiển thị trong bảng ở cuối trang và được mô tả ngắn gọn tại đây

  • Hàm thoát JavaScript thay thế hầu hết các ký hiệu dấu chấm câu bằng mã hex tương đương, nhưng được phát hiện là không phù hợp khi mã hóa ký tự UNICODE và đã được thay thế bằng hàm encodeURI
  • Hàm encodeURIComponent là một phần mở rộng của encodeURI, điểm khác biệt là nó cũng thoát khỏi các ký tự sau. , / ?. @ & = + $
  • Về phía PHP, sự khác biệt duy nhất giữa urlencode và rawurlencode là cái sau thoát khỏi ký tự trong khi urlencode sử dụng + thay thế được chấp nhận rộng rãi
  • Hàm htmlentities thoát các ký tự có ý nghĩa đặc biệt bên trong HTML bằng cách chèn các thực thể HTML vào vị trí của chúng (ví dụ:. & thay cho &). Xem bài viết của chúng tôi về Mã ký tự ASCII để biết thêm chi tiết
  • Tất cả các chức năng đều có chức năng 'giải mã' bổ sung mà hầu như ngược lại

Thoát khỏi dấu ngoặc kép và dấu ngoặc đơn

Một chức năng PHP thiết yếu khác có ích khi truyền dữ liệu sang JavaScript là dấu gạch chéo bổ sung sẽ thêm dấu gạch chéo ngược trước. dấu gạch chéo ngược, dấu ngoặc đơn và dấu ngoặc kép

Ví dụ: để lặp lại một biến PHP thành mã JavaScript

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
6

Trong HTML, chúng tôi sử dụng dấu ngoặc kép và trong dấu ngoặc đơn JavaScript, do đó, bất kỳ dấu ngoặc kép nào trong mã JavaScript sẽ cần được thoát để chúng không xung đột với dấu ngoặc kép HTML hoặc JavaScript

Để biết thêm chi tiết về cách thoát các biến PHP để sử dụng trong JavaScript, hãy xem bài viết liên quan của chúng tôi. Chuyển các biến PHP sang JavaScript

Bảng ký tự được mã hóa

Tại đây, bạn có thể thấy các hàm JavaScript và PHP khác nhau áp dụng như thế nào cho một loạt các ký tự phổ biến

Đầu vàoJavaScriptPHPescapeencodeURIencodeURIThành phầnurlencoderawurlencodehtmlentities%20%20%20+%20. %21. %21%21. @@@%40%40%40@#%23#%23%23%23#$%24$%24%24%24$%%25%25%25%25%25%^%5E%5E% . %3A. %3A%3A%3A. ;%3B;%3B%3B%3B;;. "%22%22%22%22%22"'%27''%27%27'\%5C%5C%5C%5C%5C\///%2F%2F%2F/?%3F?%3F

Thông số kỹ thuật của RFC 1738 khiến cho việc đọc trở nên hấp dẫn - vì tài liệu này đã 10 năm tuổi nhưng vẫn có thể áp dụng được

Ký tự Escape là biểu tượng được sử dụng để bắt đầu lệnh thoát nhằm thực hiện một số thao tác. Chúng là những ký tự có thể được giải thích theo một số cách thay thế khác với những gì chúng tôi dự định. Javascript sử dụng '\' (dấu gạch chéo ngược) ở phía trước làm ký tự thoát

Mục đích của chúng tôi là chúng tôi muốn in trong bảng điều khiển như

""Geeks" for "Geeks" is 'the' best 'platform'"

Để in dấu ngoặc kép, sử dụng các ký tự thoát, chúng tôi có hai tùy chọn

  • Đối với dấu nháy đơn. \’  (dấu gạch chéo ngược trước dấu nháy đơn)
  • Đối với dấu ngoặc kép. \”  (dấu gạch chéo ngược theo sau bởi dấu ngoặc kép)

Chúng tôi cũng có thể in dấu ngoặc kép trong bảng điều khiển bằng cách sử dụng dấu ngoặc đơn và dấu ngoặc kép mà không cần sử dụng ký tự thoát. Nhưng có một hạn chế là chúng ta chỉ có thể in dấu ngoặc đơn hoặc dấu ngoặc kép. Nếu chuỗi được biểu diễn bằng dấu ngoặc đơn thì chúng ta chỉ in được dấu ngoặc kép, còn nếu chuỗi được biểu thị bằng dấu nháy đơn thì chúng ta có thể in dấu ngoặc kép bên trong nó. Các chuỗi được biểu diễn trong dấu nháy đơn hoặc kép là như nhau, không có sự khác biệt

Javascript




true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
7

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
8

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
0

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
2____23
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
0

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
8

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
3

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
5
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
6
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
0

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
8

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
Geeks 'FOR' Geeks
Geeks "FOR" Geeks
'Geeks "FOR" Geeks'
""Geeks" for "Geeks" is 'the' best 'platform'"
0

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
Geeks 'FOR' Geeks
Geeks "FOR" Geeks
'Geeks "FOR" Geeks'
""Geeks" for "Geeks" is 'the' best 'platform'"
2
Geeks 'FOR' Geeks
Geeks "FOR" Geeks
'Geeks "FOR" Geeks'
""Geeks" for "Geeks" is 'the' best 'platform'"
3

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
Geeks 'FOR' Geeks
Geeks "FOR" Geeks
'Geeks "FOR" Geeks'
""Geeks" for "Geeks" is 'the' best 'platform'"
5
Geeks 'FOR' Geeks
Geeks "FOR" Geeks
'Geeks "FOR" Geeks'
""Geeks" for "Geeks" is 'the' best 'platform'"
6

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
Geeks 'FOR' Geeks
Geeks "FOR" Geeks
'Geeks "FOR" Geeks'
""Geeks" for "Geeks" is 'the' best 'platform'"
8
Geeks 'FOR' Geeks
Geeks "FOR" Geeks
'Geeks "FOR" Geeks'
""Geeks" for "Geeks" is 'the' best 'platform'"
6

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
8

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
72

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
74

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
76

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
78
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
79
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
0

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
82____183

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
8

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
86

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
88

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
90____191
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
0

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
9
true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
82____195

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks
96

đầu ra

true
Geeks for Geeks
Geeks for Geeks
"Geeks" "FOR" Geeks
'Geeks' 'FOR' Geeks

ví dụ 2. Sử dụng chuỗi thoát – Nếu bạn đã bắt đầu trích dẫn bằng \’ thì bạn cũng phải kết thúc trích dẫn bằng \’ và ngược lại

Làm cách nào để sử dụng ký tự thoát trong JavaScript?

Javascript sử dụng '\' (dấu gạch chéo ngược) phía trước làm ký tự thoát. Để in dấu ngoặc kép, sử dụng các ký tự thoát, chúng tôi có hai tùy chọn. Dành cho dấu nháy đơn. \' (dấu gạch chéo ngược theo sau bởi dấu nháy đơn) Dành cho dấu nháy kép. \” (dấu gạch chéo ngược theo sau bởi dấu ngoặc kép)

Làm cách nào để thoát trong regex JavaScript?

* + ( ) theo nghĩa đen, chúng ta cần thêm vào trước chúng một dấu gạch chéo ngược \ (“escape them”) . Chúng ta cũng cần trốn thoát / nếu chúng ta ở trong nhà /. / (nhưng không phải bên trong RegExp mới). Khi chuyển một chuỗi sang RegExp mới, chúng ta cần nhân đôi dấu gạch chéo ngược \\, khiến các trích dẫn chuỗi sử dụng một trong số chúng.

Tôi có thể sử dụng cái gì thay vì thoát trong JavaScript?

Hàm escape() không được dùng nữa. Thay vào đó, hãy sử dụng encodeURI() hoặc encodeURIComponent() .