Làm cách nào để kiểm tra xem chuỗi có chứa chuỗi trong php không?

Đôi khi, bạn có thể muốn kiểm tra xem một chuỗi có chứa một từ hoặc chuỗi con cụ thể hay không. Điều này là do bạn có thể phải thực hiện một số thao tác trên chuỗi con hoặc từ đó. Một trong những cách dễ nhất để làm điều này là trong PHP là sử dụng hàm strpos(). Chúng ta sẽ xem xét các cách khác để kiểm tra chuỗi con trong bài viết này

Hướng dẫn này sẽ giải thích

  1. Cách kiểm tra xem chuỗi có chứa chuỗi con không
  2. Tìm từ cụ thể trong chuỗi

Sử dụng hàm strrpos() để kiểm tra xem chuỗi có chứa chuỗi con không

Phương thức strrpos() được sử dụng để xác định vị trí xuất hiện cuối cùng của một chuỗi con hoặc từ trong một chuỗi. Vị trí chuỗi bắt đầu từ 0. Nếu không tìm thấy chuỗi, giá trị Boolean Sai được trả về

cú pháp

strrpos(string,find,start)

Phương thức nhận 2 tham số là chuỗi cần tìm và chuỗi con cần tìm. Tham số tùy chọn start cho biết nơi bắt đầu quá trình tìm kiếm

Thí dụ

đầu ra

Word Found at Position: 16

ví dụ 2

đầu ra

Word Found at Position: 16

Trong cả hai ví dụ trên, phương thức strpos() nhận các tham số $mystring và $word. Điều kiện if kiểm tra xem chuỗi con có được tìm thấy hay không. Câu lệnh echo in ra vị trí của chuỗi.   

Sử dụng preg_match để tìm kiếm chuỗi chứa chuỗi con

Phương thức preg_match() là một đối sánh biểu thức chính quy giúp tìm một chuỗi

cú pháp

preg_match(pattern, input)

Các tham số chính là mẫu là biểu thức để tìm kiếm. Tham số đầu vào là chuỗi tìm kiếm diễn ra.    

đầu ra

Word Found

Nếu bạn xem xét hiệu suất, thì strpos() nhanh hơn khoảng ba lần so với preg_match(). Phương thức preg_match() mất khoảng 1. 5 giây để hoàn thành một thao tác, trong khi strpos() mất khoảng 0. 5 giây

Sử dụng chức năng preg_match không phân biệt chữ hoa chữ thường để tìm kiếm chuỗi chứa chuỗi con

Thí dụ

Chữ i ở cuối biểu thức chính quy được dùng để thay đổi biểu thức chính quy thành một biểu thức không phân biệt chữ hoa chữ thường

Sử dụng chức năng preg_match để tìm kiếm công việc cụ thể trong chuỗi

Khi bạn đang tìm kiếm một từ cụ thể chứ không phải một chuỗi con, bạn cần hiểu rằng chúng cũng có thể xuất hiện trong các từ khác. Ví dụ,

  • "are" ở đầu "khu vực"
  • "are" ở giữa "giá vé"

Một cách để giảm thiểu điều này là sử dụng biểu thức chính quy kết hợp với ranh giới từ (\b)

Thí dụ

Ví dụ trên sẽ tìm kiếm từ “are”. Nó không phân biệt chữ hoa chữ thường

Phần kết luận

Nếu bạn muốn tìm chuỗi con như url ‘https. //www. stechies. com/photoshop/’ và bạn muốn tìm kiếm chuỗi con ‘stechies’ thì bạn nên tìm strpos()

Nhưng nếu bạn muốn tìm kiếm một từ cụ thể trong chuỗi, chẳng hạn như “stechies” trong chuỗi 'hi stechies là trang web tốt nhất để hướng dẫn đào tạo' thì bạn nên truy cập preg_match với các biểu thức chính quy

Trong PHP 8, hàm str_contains xác định xem một chuỗi có chứa chuỗi con đã cho ở bất kỳ đâu không. Hàm str_contains kiểm tra xem chuỗi thứ nhất có được chứa trong chuỗi thứ hai hay không và nó trả về giá trị Boolean đúng/sai dựa trên việc tìm thấy chuỗi đó hay không. nó là một chức năng tự giải thích

str_contains(string $haystack, string $needle): bool

Ví dụ 1. PHP 8 hàm str_contains

đầu ra

string(23) "Tutorial has been found"

Thí dụ. hàm str_contains

Ghi chú. Chương trình trên trả về false vì chuỗi đầu tiên không chứa chuỗi thứ hai

hàm strpos()

Trong PHP7. x, hàm strops() dùng để kiểm tra xem một chuỗi đã cho có chứa một chuỗi khác hay không. Hàm này trả về vị trí của chuỗi kim hoặc trả về false nếu không tìm thấy chuỗi kim

Hàm này có khả năng trả về vị trí xuất hiện đầu tiên của chuỗi con bên trong chuỗi. Trong trường hợp không phát hiện chuỗi con, trả về false. Tuy nhiên, vị trí của chuỗi bắt đầu từ 0 chứ không phải 1. Để hiểu rõ hơn về chức năng này, hãy xem ví dụ bên dưới

Có một chức năng mới str_contains() trong PHP 8 cung cấp chức năng tương tự

Hàm strpos() giúp phát hiện vị trí xuất hiện đầu tiên của một chuỗi bên trong một chuỗi khác

Rất nhiều lần khi tôi làm việc với các chuỗi trong PHP, điều quan trọng là phải kiểm tra xem một chuỗi có chứa một chuỗi con khác không. PHP có rất nhiều hàm giúp bạn thao tác với chuỗi theo bất kỳ cách nào bạn muốn. Hôm nay chúng ta sẽ sử dụng một số hàm này để tìm hiểu cách kiểm tra xem một chuỗi có chứa một chuỗi con cụ thể hay không

  • Cách kiểm tra xem một chuỗi có chứa một chuỗi con khác trong PHP không

    Monty Shokeen

    26 Th02 2021

  • Cách cắt chuỗi trong PHP

    Monty Shokeen

    28 Thg 1 2021

Sử dụng các hàm mới trong PHP 8

Ba chức năng mới đã được thêm vào trong PHP 8 để giúp chúng tôi tìm hiểu xem một chuỗi có chứa một chuỗi con khác hay không. Xin lưu ý rằng tất cả các hàm này đều phân biệt chữ hoa chữ thường và việc kiểm tra sự tồn tại của một chuỗi con trống với chúng sẽ luôn trả về <?php 48

  1. <?php 49 kiểm tra xem một chuỗi có chứa một chuỗi con cụ thể không
  2. <?php 50 kiểm tra xem một chuỗi có kết thúc bằng một chuỗi con cụ thể không
  3. <?php 51 kiểm tra xem một chuỗi có bắt đầu bằng một chuỗi con cụ thể không

1<?php 23$sentence = "Dolphins and Elephants are intelligent animals."; 45if(str_contains($sentence, "Elephants")) { 6 echo 'Elephants are intelligent.'; <?php 0<?php 1<?php 2<?php 3<?php 4<?php 5<?php 6<?php 7<?php 8<?php 9<?php 12122232425262728<?php 13031323334

Như tôi đã đề cập trước đó, các chức năng này thực hiện khớp phân biệt chữ hoa chữ thường. Bạn cũng có thể thực hiện khớp không phân biệt chữ hoa chữ thường với chúng bằng cách trước tiên chuyển đổi cả chuỗi và chuỗi con thành cùng một trường hợp bằng cách sử dụng <?php 52 hoặc <?php 53

Các chức năng này là lý tưởng nếu bạn không muốn nhận thêm bất kỳ thông tin nào về các chuỗi con, chẳng hạn như vị trí của chúng. Những người cần thêm thông tin về trận đấu nên cân nhắc sử dụng các chức năng bên dưới

Sử dụng <?php 54 và <?php 55

Bạn có thể sử dụng hàm PHP <?php 54 để lấy vị trí xuất hiện đầu tiên của chuỗi con trong một chuỗi. Hàm sẽ trả về <?php 57 nếu không tìm thấy chuỗi con

Khi bạn sử dụng <?php 54 để kiểm tra chuỗi con, hãy đảm bảo rằng bạn sử dụng toán tử bất đẳng thức nghiêm ngặt. Điều này là do vị trí được trả về bởi <?php 54 bắt đầu bằng 0 và 0 cũng có thể tương đương với <?php 57. Sử dụng kiểm tra bằng thông thường sẽ cho bạn phủ định sai nếu chuỗi con ở ngay đầu chuỗi chính

Dưới đây là một số ví dụ về <?php 54

1<?php 233945$sentence = "Dolphins and Elephants are intelligent animals."; 26$sentence = "Dolphins and Elephants are intelligent animals."; 4<?php 0<?php 1<?php 2$sentence = "Dolphins and Elephants are intelligent animals."; 8<?php 4<?php 5<?php 742<?php 9442146234824<?php 1265228305532573346if(str_contains($sentence, "Elephants")) { 0if(str_contains($sentence, "Elephants")) { 1if(str_contains($sentence, "Elephants")) { 2<?php 1if(str_contains($sentence, "Elephants")) { 4if(str_contains($sentence, "Elephants")) { 5if(str_contains($sentence, "Elephants")) { 6if(str_contains($sentence, "Elephants")) { 734

Như bạn có thể thấy trong ví dụ trên, Angela không ở đầu câu của chúng ta, vì vậy nó sẽ có một vị trí khác 0 có giá trị là <?php 48

Mặt khác, Amy đúng ở đầu và vị trí 0 của nó được đánh giá là sai, mặc dù nó tồn tại trong chuỗi. Do đó, hãy luôn đảm bảo rằng bạn đánh giá giá trị của <?php 54 với <?php 64 vì không có cách nào để biết vị trí của một chuỗi con khi xử lý các chuỗi trong thực tế

Đôi khi, bạn có thể cần thực hiện việc kiểm tra chuỗi con này trong chuỗi không phân biệt chữ hoa chữ thường. Trong trường hợp đó, bạn chỉ cần sử dụng hàm <?php 55 trong PHP. Nó hoạt động chính xác như <?php 54 nhưng làm cho tìm kiếm không phân biệt chữ hoa chữ thường

1<?php 236345___66624_______8<?php 0<?php 1<?php 2<?php 4<?php 3<?php 5 echo 'Elephants are intelligent.'; 5<?php 7<?php 1____<?php 9____21_ echo 'Elephants are intelligent.'; 9_______

Sử dụng <?php 67 và <?php 68

Theo mặc định, hàm <?php 67 trả về một phần của chuỗi chính, bắt đầu từ chuỗi con và đi đến cuối chuỗi chính. Nó sẽ trả về <?php 57 nếu chuỗi con không tồn tại bên trong chuỗi chính

Chúng ta có thể sử dụng thông tin này để kiểm tra sự tồn tại của một chuỗi con bên trong một chuỗi. Tất cả những gì chúng ta phải làm là đánh giá giá trị được trả về bởi <?php 67 và kiểm tra xem nó có phải là <?php 57 hay không. Cũng giống như lần trước, chúng ta sẽ sử dụng toán tử bất đẳng thức nghiêm ngặt <?php 64 để kiểm tra

Dưới đây là một số ví dụ

1<?php 23<?php 074<?php 0956<?php 12<?php 0<?php 14<?php 2<?php 1<?php 4<?php 18<?php 5<?php 7<?php 21<?php 9<?php 23214623<?php 2724<?php 126<?php 312830<?php 3432<?php 363346if(str_contains($sentence, "Elephants")) { 0<?php 40if(str_contains($sentence, "Elephants")) { 2<?php 1if(str_contains($sentence, "Elephants")) { 4<?php 44if(str_contains($sentence, "Elephants")) { 6if(str_contains($sentence, "Elephants")) { 734

Bạn có thể sử dụng <?php 68 thay cho <?php 67 để làm cho tìm kiếm không phân biệt chữ hoa chữ thường. Tất cả các hành vi khác của <?php 68 vẫn giữ nguyên

Suy nghĩ cuối cùng

Trong thủ thuật nhanh này, chúng ta đã tìm hiểu ba cách khác nhau để kiểm tra xem một chuỗi có chứa chuỗi con hay không trong PHP. Bạn có thể sử dụng bất kỳ chức năng nào trong số này tùy thuộc vào thông tin bạn cần từ chuỗi. Sử dụng các hàm PHP 8 mới sẽ cho phép bạn bỏ qua bất kỳ loại kiểm tra nghiêm ngặt nào, nhưng bạn sẽ cần sử dụng các hàm cũ hơn nếu bạn muốn biết vị trí của chuỗi con hoặc lấy một phần của chuỗi chính làm giá trị trả về

Chủ đề