Làm cách nào để xóa một trích dẫn khỏi chuỗi trong PHP?

Trong hướng dẫn này, chúng ta sẽ nghiên cứu các cách tiếp cận khác nhau để loại bỏ các dấu ngoặc kép bắt đầu và kết thúc khỏi một Chuỗi trong Java

Những gì chúng ta sẽ khám phá ở đây có thể hữu ích cho việc xử lý văn bản được trích xuất từ ​​tệp hoặc nhận được từ các nguồn khác

2. Cách tiếp cận đơn giản. phương thức chuỗi con

Đầu tiên, chúng ta sẽ bắt đầu với một cách tiếp cận đơn giản bằng cách sử dụng phương thức chuỗi con. Phương thức này có thể được gọi trên một đối tượng Chuỗi để trả về một chuỗi con cụ thể

Phương thức yêu cầu hai tham số

  1. beginIndex — chỉ mục của ký tự mà chuỗi con sẽ bắt đầu
  2. end Index - chỉ mục sau nơi chuỗi con sẽ kết thúc

Do đó, xét rằng Chuỗi đầu vào của chúng ta được đặt trong dấu ngoặc kép, chúng ta có thể sử dụng phương thức chuỗi con

String input = "\"text wrapped in double quotes\"";
String result = input.substring[1, input.length[] - 1];
System.out.println["Input: " + input];
System.out.println["Result: " + result];

Bằng cách thực thi đoạn mã trên, chúng ta có đầu ra sau

Input: "text wrapped in double quotes"
Result: text wrapped in double quotes

Nếu chúng tôi không chắc liệu Chuỗi có được đặt trong dấu ngoặc kép hay không, chúng tôi có thể kiểm tra nó trước khi chạy phương thức chuỗi con

if [input != null && input.length[] >= 2 
      && input.charAt[0] == '\"' && input.charAt[input.length[] - 1] == '\"'] {
    result = input.substring[1, input.length[] - 1];
}

Trong ví dụ trên, chúng tôi đã kiểm tra xem Chuỗi có ít nhất hai ký tự và nó bắt đầu và kết thúc bằng dấu ngoặc kép

3. Sử dụng phương pháp thay thế tất cả

Ngoài phương thức substring, chúng ta cũng có thể sử dụng phương thức replaceAll. Phương thức này thay thế tất cả các phần của Chuỗi khớp với một biểu thức chính quy đã cho. Sử dụng replaceAll, chúng tôi có thể loại bỏ tất cả các lần xuất hiện của dấu ngoặc kép bằng cách thay thế chúng bằng các chuỗi trống

String result = input.replaceAll["\"", ""];

Một mặt, cách tiếp cận này có ưu điểm là loại bỏ tất cả các lần xuất hiện của dấu ngoặc kép, ngay cả khi chuỗi có nhiều dòng. Mặt khác, với cách tiếp cận này, chúng tôi không thể chỉ xóa dấu ngoặc kép ở đầu và cuối Chuỗi

Để loại bỏ dấu ngoặc kép ngay từ đầu và cuối Chuỗi, chúng ta có thể sử dụng biểu thức chính quy cụ thể hơn

String result = input.replaceAll["^\"|\"$", ""];

Sau khi thực hiện ví dụ này, các lần xuất hiện dấu ngoặc kép ở đầu hoặc cuối Chuỗi sẽ được thay thế bằng chuỗi rỗng

Để hiểu cách tiếp cận này, hãy chia nhỏ biểu thức chính quy của chúng ta

Đầu tiên, chúng ta có ký hiệu dấu mũ [^], theo sau là dấu ngoặc kép thoát [\”] để khớp với dấu ngoặc kép ở đầu Chuỗi. Sau đó, có một biểu tượng ống [. ] để chỉ ra một phương án phù hợp, tương tự như toán tử logic OR

Cuối cùng, chúng tôi đã thoát khỏi dấu ngoặc kép, theo sau là ký hiệu đô la [$] để khớp dấu ngoặc kép ở cuối Chuỗi

4. Dùng Ổi

Một cách tiếp cận khả thi khác để xóa dấu ngoặc kép ở đầu và cuối Chuỗi là sử dụng lớp CharMatcher từ thư viện Guava

String result = CharMatcher.is['\"'].trimFrom[input];

Cách tiếp cận này dễ hiểu hơn và chỉ xóa các trích dẫn đầu và cuối khỏi Chuỗi. Tuy nhiên, để phương pháp này hoạt động, chúng ta cần thêm thư viện ổi vào dự án của mình


    com.google.guava
    guava
    ${guava-version}

Trong trường hợp này, chúng tôi cần đặt thuộc tính ${guava-version} thành phiên bản mà chúng tôi muốn sử dụng

5. Phần kết luận

Trong bài viết này, chúng tôi đã khám phá các tùy chọn khác nhau để xóa dấu ngoặc kép ở đầu và cuối Chuỗi. Chúng ta có thể áp dụng bất kỳ phương pháp nào trong số này vào thực tế và mỗi phương pháp đều có ưu điểm và nhược điểm

Ví dụ: khi sử dụng thư viện Guava, chúng tôi có một giải pháp đơn giản và thanh lịch. Tuy nhiên, nếu Guava không được bao gồm trong dự án của chúng tôi, giải pháp này sẽ yêu cầu bổ sung một phụ thuộc mới

Vì vậy, bạn đang vui vẻ viết mã, thiết lập xác thực dữ liệu của mình, khi bạn nhận ra rằng bạn đột nhiên không thể xác thực tên “John O'Neil” — điều gì mang lại? . Tôi sẽ cho rằng việc xác thực dữ liệu của bạn đã hoạt động hoàn hảo—nếu không, thì bạn cần phải làm cho nó hoạt động hiệu quả

Vấn đề tiềm ẩn 1 - Thoát khỏi dấu gạch chéo ngược

Trước tiên, hãy đảm bảo rằng biến bạn đang kiểm tra không có bất kỳ dấu gạch chéo ngược không mong muốn nào thoát khỏi dấu nháy đơn. Bạn có thể làm điều này với hàm Stripslashes[] trong PHP. Mã của bạn sẽ trông giống như thế này

$my_name_field = $_POST['name'];
$my_name_field = stripslashes[$my_name_field];

Nếu bạn sử dụng phương pháp này, hãy nhớ rằng sau này bạn có thể cần phải thoát lại các trích dẫn đó nếu bạn đang làm một việc gì đó như đưa dữ liệu vào cơ sở dữ liệu. Bạn cũng có thể chỉ cần sử dụng dấu ngoặc kép để đưa nó vào cơ sở dữ liệu, điều này sẽ loại bỏ vấn đề thoát lại

Vấn đề tiềm ẩn 2 - Regex của bạn có thể sai

Khi bạn đặt trích dẫn đơn vào biểu thức chính quy của mình, hãy thoát nó bằng dấu gạch chéo ngược và sau đó nhớ thay đổi các trích dẫn xung quanh thành trích dẫn kép nếu bạn đang sử dụng dấu ngoặc đơn. Ví dụ: một hàm trả về true hoặc false cho một tên hợp lệ bao gồm chữ cái ASCII viết hoa và viết thường, dấu gạch nối, dấu chấm, dấu phẩy, dấu cách và dấu nháy đơn trông như thế này

________số 8_______

Điều đó sẽ xử lý bất kỳ tên tiếng Anh hợp lệ nào. Tất nhiên, nếu bạn xử lý nhiều tên có ký tự nằm ngoài những ký tự được chỉ định, bạn sẽ muốn sửa đổi tên đó cho phù hợp với nhu cầu của mình

Vấn đề tiềm ẩn 3 — Điều gì sẽ xảy ra nếu bạn không thể thoát khỏi nhát chém?

Có thể, vì lý do nào đó, bạn không thể xóa dấu gạch chéo thoát. Nếu trường hợp này xảy ra, chỉ cần loại bỏ nó trong chức năng trên thay vì thực hiện trong mã chính. Giả sử bạn không chuyển biến theo tham chiếu, dấu gạch chéo vẫn ở vị trí trong biến bạn cần, nó chỉ bị xóa trong biến tạm thời trong hàm

Ngoài ra, bạn chỉ có thể thêm dấu gạch chéo ngược vào danh sách các ký tự được phép của mình… Tuy nhiên, tôi sẽ cố gắng tránh điều này… bạn không bao giờ biết một số cá nhân độc hại có thể nghĩ ra điều gì nếu bạn cho phép các ký tự thoát vào đầu vào của mình

Vẫn không hoạt động?

Nếu cách trên không hoạt động và bạn không thể hiểu tại sao, hãy sử dụng hàm str_replace[] trong hàm để loại bỏ tất cả các dấu nháy đơn, như thế này. str_replace["'","",$name]. Tuy nhiên, hãy chắc chắn rằng bạn chỉ làm điều đó trong hàm và không chuyển nó trở lại mã chính, nếu không, bạn sẽ mất hoàn toàn dấu nháy đơn

Làm cách nào để xóa dấu nháy đơn khỏi chuỗi trong PHP?

Xóa dấu ngoặc kép khỏi chuỗi trong PHP .
Xóa dấu ngoặc kép khỏi chuỗi trong Php. Sử dụng phương thức str_replace[]. Sử dụng Phương thức preg_replace[]
Xóa dấu ngoặc kép khỏi đầu và cuối chuỗi trong Php. Sử dụng phương thức trim[]. Sử dụng Phương thức preg_Replace[]

Làm cách nào để xóa các trích dẫn đơn khỏi JSON PHP?

You can do something like this:

Chủ Đề