PHP thay dấu ngoặc đơn bằng dấu ngoặc kép

Sử dụng Backticks, Double Quotes và Single Quotes khi truy vấn cơ sở dữ liệu MySQL có thể rút gọn thành hai điểm cơ bản

  1. Dấu ngoặc kép [Đơn và Đôi] được sử dụng xung quanh chuỗi
  2. Backticks được sử dụng xung quanh định danh bảng và cột

Dấu ngoặc kép

Sử dụng dấu ngoặc kép ở đây là một số ví dụ đầu vào và đầu ra

SELECT "test", "'test'", "''test''", "te""st";

Đầu ra trông như thế này

Gói các trích dẫn đơn bên trong các trích dẫn kép sẽ hủy bỏ hành vi mong đợi của các trích dẫn đơn trong Truy vấn MySQL và thay vào đó coi nó như một phần của chuỗi. Điều này có thể được nhìn thấy trong các cột 2 và 3 trong ví dụ trên

Chèn hai dấu ngoặc kép vào giữa chuỗi sẽ hủy bỏ một trong số chúng

Dấu nháy đơn

Sử dụng dấu ngoặc đơn ở đây là một số ví dụ đầu vào và đầu ra

SELECT 'test', '"test"', '""test""', 'te''st';

Đầu ra trông như thế này

Như thể hiện trong phần trình diễn ở trên, dấu ngoặc đơn hoạt động giống như dấu ngoặc kép trong các ngữ cảnh này

Sử dụng dấu ngoặc đơn và dấu ngoặc kép cùng nhau

Thông thường sẽ có một sự co lại trong một chuỗi hoặc một trích dẫn trực tiếp. Trong các tình huống như trong các báo cáo khảo sát của NPS hoặc các biểu mẫu phản hồi khác của khách hàng, trường hợp này thường xảy ra. Trong những trường hợp này, sử dụng dấu ngoặc kép để bọc một chuỗi văn bản có chứa một dấu nháy đơn như They've sẽ giữ dấu nháy đơn trong chuỗi dưới dạng dấu nháy đơn

Trong trường hợp này, việc trình bày một chuỗi có rút gọn sẽ trông như thế này

SELECT "They've found this tutorial to be helpful"

Đầu ra trông như thế này

Hoặc, nếu bạn cần sử dụng dấu ngoặc kép để trình bày báo giá phản hồi của khách hàng trong chuỗi, thì bạn có thể sử dụng dấu ngoặc đơn để bao toàn bộ chuỗi

SELECT 'They responded, "We found this tutorial helpful"'

Nếu bạn cần sử dụng dấu ngoặc đơn và dấu ngoặc kép trong một chuỗi chứa cả dấu ngoặc kép và dấu ngoặc kép, bạn sẽ cần sử dụng dấu gạch chéo ngược ‘' để hủy bỏ ký tự sau. Ví dụ. một chuỗi chứa ' này sẽ nhận ra dấu gạch chéo ngược như một hướng dẫn để hủy bỏ ý nghĩa cú pháp của trích dẫn đơn lẻ và thay vào đó chèn nó vào chuỗi dưới dạng dấu nháy đơn

SELECT 'They\'ve responded, "We found this tutorial helpful"'

đánh dấu ngược

Backticks được sử dụng trong MySQL để chọn các cột và bảng từ nguồn MySQL của bạn. Trong ví dụ bên dưới, chúng tôi đang gọi đến bảng có tiêu đề Album và cột Title. Sử dụng backticks, chúng tôi đang biểu thị rằng đó là tên cột và bảng

    SELECT `Album`.`Title`
    FROM `Album` AS `Album`
    GROUP BY `Album`.`Title`
    ORDER BY `Title` ASC
    LIMIT 10;

Dấu gạch ngược cho tên cột có thể không cần thiết

    SELECT Album.Title
    FROM Album AS Album
    GROUP BY Album.Title
    ORDER BY Title ASC
    LIMIT 10;

Cả hai truy vấn này sẽ trả về cùng một kết quả

Để tất cả chúng cùng nhau

Truy vấn sau đây sẽ sử dụng tất cả những gì chúng ta đã học ở đây, bao gồm dấu nháy kép, dấu nháy đơn và dấu nháy ngược

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

SELECT 'test', '"test"', '""test""', 'te''st';
0

Đ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.

SELECT 'test', '"test"', '""test""', 'te''st';
1. 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 để thay thế trích dẫn đơn trong PHP?

$keyItem = str_replace ["'","\'",$keyItem]; Điều này thay thế một trích dẫn đơn bằng một trích dẫn đơn 'thoát' \'. Lưu câu trả lời này.

Làm cách nào để thay thế trích dẫn kép bằng trích dẫn đơn trong PHP?

để thay thế dấu ngoặc kép, bạn có thể làm điều này. $newPhrase = str_replace['"', '', $phrase]; .
Sử dụng khả năng hiểu danh sách để lặp lại danh sách
sử dụng str. .
Các mục trong danh sách mới sẽ không chứa dấu ngoặc kép ở đầu và cuối

Bạn có thể sử dụng dấu ngoặc đơn và dấu ngoặc kép trong PHP không?

Nếu là ký tự đặc biệt thì nó sẽ được coi như trong quá trình phân tích chuỗi. Các chuỗi trong PHP có thể được chỉ định theo bốn cách khác nhau. Cú pháp trích dẫn đơn, trích dẫn kép, cú pháp Heredoc và cú pháp nowdac. Trích dẫn đơn và trích dẫn kép được sử dụng thường xuyên nhất .

Bạn có thể sử dụng dấu ngoặc kép trong PHP không?

Chuỗi trích dẫn đơn và trích dẫn kép. Bạn có thể tạo một chuỗi trong PHP bằng cách đặt một chuỗi ký tự trong dấu ngoặc đơn hoặc dấu ngoặc kép . PHP sẽ thực sự diễn giải các chuỗi sau theo cách khác. 'Đây là một chuỗi trong dấu nháy đơn.

Chủ Đề