Câu hỏi Làm thế nào để bạn thực hiện một chuỗi trong PHP với một dấu gạch chéo ngược trong nó? [đã đóng]


Tôi cần một dấu gạch chéo ngược là một phần của một chuỗi. Tôi làm nó như thế nào?


26
2018-01-21 22:59


gốc


(tài liệu tham khảo)  Dây - Gordon
có thể trùng lặp Tại sao "\" đưa ra lỗi trong khi lưu trữ nó trong chuỗi trong PHP? - Bobby


Các câu trả lời:


Sử dụng dấu nháy đơn

$string = 'abc\def';

Sử dụng dấu ngoặc kép

$string = "abc\\def";

45
2018-01-21 23:02



Trong ví dụ cụ thể này, phản ứng dữ dội có thể đơn độc. Tuy nhiên, thực hành tốt để thoát khỏi nó. Nhưng đối với báo giá đơn như nhau. - mario
Đối với các dấu nháy đơn, điều này sẽ không hoạt động nếu dấu gạch chéo ngược ở cuối chuỗi. Sử dụng dấu gạch chéo ngược kép trong dấu nháy đơn hoạt động trong tất cả các trường hợp - ví dụ sau tốt hơn bất kể loại báo giá là gì. - jskidd3


Câu trả lời ngắn:

Sử dụng hai dấu gạch chéo ngược.

Câu trả lời dài:

Đôi khi bạn có thể sử dụng một dấu gạch chéo ngược đơn, nhưng đôi khi bạn cần hai. Khi bạn có thể sử dụng một dấu gạch chéo ngược phụ thuộc vào hai điều:

  • cho dù chuỗi của bạn được bao quanh bởi dấu nháy đơn hay dấu nháy kép và
  • nhân vật ngay sau dấu gạch chéo ngược.

Nếu bạn có chuỗi trích dẫn kép thì dấu gạch chéo ngược được coi là ký tự thoát trong nhiều trường hợp, vì vậy tốt nhất là luôn luôn thoát dấu gạch chéo ngược bằng dấu gạch chéo ngược khác:

$s = "foo\\bar"

Trong một dấu gạch chéo ngược chuỗi trích dẫn duy nhất sẽ là chữ trừ khi chúng được theo sau bởi một dấu nháy đơn hoặc một dấu gạch chéo ngược khác. Vì vậy, để xuất ra một dấu gạch chéo ngược đơn với một chuỗi trích dẫn duy nhất, bạn thường có thể viết điều này:

$s = 'foo\bar'

Nhưng để xuất ra hai dấu gạch chéo ngược liên tiếp, bạn cần điều này:

$s = 'foo\\\\bar'

Nếu bạn luôn sử dụng hai dấu gạch chéo ngược, bạn sẽ không bao giờ sai.


41
2018-01-21 23:02



1 để trích dẫn các ngoại lệ khi sử dụng một dấu nháy đơn trong dấu nháy đơn - Mark Baker
tôi thích if( !preg_match( '/^[\\\,.\d\pL]*$/u', $_POST['some_text'] ) ) { ... } Vì vậy, để thoát khỏi dấu gạch chéo ngược tôi đã phải sử dụng 3 dấu gạch chéo ngược \\\. Đã thử với một và hai, không hoạt động. Không hiểu tại sao 3 - Andris
@ user2118559 hai chữ cái đầu tiên trong chuỗi trích dẫn đơn được tạo ra, chuỗi thứ ba bị bỏ lại một mình (không theo sau dấu nháy đơn hoặc dấu gạch chéo ngược). do đó, hai dấu gạch chéo ngược được chèn vào trong chuỗi được chuyển đến regexp. Sau đó, regexp sử dụng lệnh đầu tiên để thoát khỏi phần thứ hai, dẫn đến một ký tự backspace "thực" (= thực sự được tìm thấy trong văn bản). Bạn có thể đã sử dụng bốn thay vì (bốn trở thành hai, phân tích chuỗi, sau đó hai còn lại trở thành một, phân tích cú pháp regexp) như đề xuất một cách chính xác bằng câu trả lời này. - FrancescoMM


Bạn phải thoát khỏi tất cả các dấu gạch chéo ngược như "c:\\windows\\".


4
2018-01-21 23:02



Đây là một ví dụ tốt hơn - user3284463