Hướng dẫn dùng str_contains php trong PHP

Hàm str_contains trong PHP 8 có tác dụng xác định xem một chuỗi có chứa một chuỗi cần tìm hay không.

1. Cú pháp.

str_contains[$haystack, $needle]

Trong đó:

  • $haystackstring bạn cần search.
  • $needlestring bạn muốn search trong $haystack.

Hàm str_contains sẽ trả về true nếu chuỗi $needle có trong chuỗi $haystack và ngược lại sẽ trả về false nếu  chuỗi $needle không có trong chuỗi $haystack.

2. Ví dụ.

VD1: Với chuỗi cần tìm là chuỗi rỗng.


if [str_contains['toidicode.com', '']] {
    echo "contains";
}

//Output: contains

Chú ý: Nếu như bạn kiểm tra một chuỗi trống '' có tồn tại trong một chuỗi khác không thì hàm str_contains sẽ luôn luôn trả về true.

VD2: Ví dụ với chữ hoa thường.

$string = "Toidicode.Com";

if [str_contains[$string, 'com']] {
    echo "Contains" . PHP_EOL;
} else {
    echo "'com' was not found in '$string'" . PHP_EOL;
}

//Output: 'com' was not found in 'Toidicode.Com'

Như vậy:  Hàm str_contains có phân biệt hoa thường.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Bài Viết Mới

Hàm str_contains trong PHP 8 có tác dụng xác định xem một chuỗi có chứa một chuỗi cần tìm hay không.

1. Cú pháp.

str_contains[$haystack, $needle]

Trong đó:

  • $haystackstring bạn cần search.
  • $needlestring bạn muốn search trong $haystack.

Hàm str_contains sẽ trả về true nếu chuỗi $needle có trong chuỗi $haystack và ngược lại sẽ trả về false nếu  chuỗi $needle không có trong chuỗi $haystack.

2. Ví dụ.

VD1: Với chuỗi cần tìm là chuỗi rỗng.


if [str_contains['toidicode.com', '']] {
    echo "contains";
}

//Output: contains

Chú ý: Nếu như bạn kiểm tra một chuỗi trống '' có tồn tại trong một chuỗi khác không thì hàm str_contains sẽ luôn luôn trả về true.

VD2: Ví dụ với chữ hoa thường.

$string = "Toidicode.Com";

if [str_contains[$string, 'com']] {
    echo "Contains" . PHP_EOL;
} else {
    echo "'com' was not found in '$string'" . PHP_EOL;
}

//Output: 'com' was not found in 'Toidicode.Com'

Như vậy:  Hàm str_contains có phân biệt hoa thường.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Bài Viết Mới

answer

6035

Bạn có thể sử dụng strpos[]hàm được sử dụng để tìm sự xuất hiện của một chuỗi bên trong chuỗi khác:

$a = 'How are you?';

if [strpos[$a, 'are'] !== false] {
    echo 'true';
}

Lưu ý rằng việc sử dụng !== falselà có chủ ý; strpos[]trả về giá trị bù mà chuỗi kim bắt đầu trong chuỗi haystack hoặc boolean falsenếu không tìm thấy kim. Vì 0 là phần bù hợp lệ và 0 là "falsey", chúng tôi không thể sử dụng các cấu trúc đơn giản hơn như !strpos[$a, 'are'].

6035 hữu ích 5 bình luận chia sẻ

answer

521

Bạn có thể sử dụng các biểu thức thông thường, sẽ tốt hơn khi kết hợp từ so với strpose như được đề cập bởi những người dùng khác, nó cũng sẽ trả về đúng cho các chuỗi như giá vé, chăm sóc, nhìn chằm chằm, v.v ... Điều này có thể tránh được trong biểu thức thông thường bằng cách sử dụng các ranh giới từ.

Một kết hợp đơn giản cho có thể trông giống như thế này:

$a = 'How are you?';

if [preg_match['/\bare\b/', $a]] {
    echo 'true';
}

Về mặt hiệu suất, strpose nhanh hơn khoảng ba lần và trong tâm trí, khi tôi thực hiện một triệu so sánh cùng một lúc, phải mất preg_match1,5 giây để hoàn thành và để strpose mất 0,5 giây.

Chỉnh sửa: Để tìm kiếm bất kỳ phần nào của chuỗi, không chỉ từng chữ, tôi khuyên bạn nên sử dụng một biểu thức thông thường như

$a = 'How are you?';
$search 'are y';
if[preg_match["/{$search}/i", $a]] {
    echo 'true';
}

Phần icuối của biểu thức chính quy thay đổi biểu thức chính quy thành không phân biệt chữ hoa chữ thường, nếu bạn không muốn điều đó, bạn có thể bỏ nó.

Bây giờ điều này có thể khá rắc rối trong một số trường hợp vì chuỗi $ search không được vệ sinh trong mọi trường hợp, ý tôi là, nó có thể không vượt qua kiểm tra trong một số trường hợp như $searchlà một đầu vào của người dùng, họ có thể thêm một số chuỗi có thể hoạt động giống như một số khác biểu hiện thông thường...

Ngoài ra, đây là một công cụ tuyệt vời để kiểm tra và xem giải thích về các biểu thức chính quy khác nhau Regex101

Để kết hợp cả hai bộ chức năng thành một chức năng đa mục đích duy nhất [bao gồm cả độ nhạy trường hợp có thể lựa chọn], bạn có thể sử dụng một cái gì đó như thế này:

function FindString[$needle,$haystack,$i,$word]
{   // $i should be "" or "i" for case insensitive
    if [strtoupper[$word]=="W"]
    {   // if $word is "W" then word search instead of string in string search.
        if [preg_match["/\b{$needle}\b/{$i}", $haystack]] 
        {
            return true;
        }
    }
    else
    {
        if[preg_match["/{$needle}/{$i}", $haystack]] 
        {
            return true;
        }
    }
    return false;
    // Put quotes around true and false above to return them as strings instead of as bools/ints.
}

521 hữu ích 5 bình luận chia sẻ

answer

225

Đây là một chức năng tiện ích nhỏ hữu ích trong các tình huống như thế này

// returns true if $needle is a substring of $haystack
function contains[$needle, $haystack]
{
    return strpos[$haystack, $needle] !== false;
}

225 hữu ích 5 bình luận chia sẻ

answer

125

Mặc dù hầu hết các câu trả lời này sẽ cho bạn biết nếu một chuỗi con xuất hiện trong chuỗi của bạn, đó thường không phải là điều bạn muốn nếu bạn đang tìm kiếm một từ cụ thể và không phải là một chuỗi con .

Có gì khác biệt? Chất nền có thể xuất hiện trong các từ khác:

  • "Là" ở đầu "khu vực"
  • "Là" ở cuối "thỏ"
  • "Là" ở 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]:

function containsWord[$str, $word]
{
    return !!preg_match['#\\b' . preg_quote[$word, '#'] . '\\b#i', $str];
}

Phương pháp này không có cùng dương tính giả được ghi nhận ở trên, nhưng nó có một số trường hợp cạnh của chính nó. Ranh giới từ phù hợp trên các ký tự không-word [ \W], mà sẽ được bất cứ điều gì đó không phải là a-z, A-Z, 0-9, hoặc _. Điều đó có nghĩa là các chữ số và dấu gạch dưới sẽ được tính là các ký tự từ và các tình huống như thế này sẽ thất bại:

  • "Là" trong "Bạn đang nghĩ gì?"
  • "Là" trong "lol u dunno wut are4?"

Nếu bạn muốn bất cứ điều gì chính xác hơn điều này, bạn sẽ phải bắt đầu thực hiện phân tích cú pháp tiếng Anh và đó là một con giun khá lớn [và dù sao cũng sử dụng đúng cú pháp, không phải lúc nào cũng được đưa ra].

125 hữu ích 5 bình luận chia sẻ

answer

107

Để xác định xem một chuỗi có chứa một chuỗi khác hay không, bạn có thể sử dụng hàm PHP strpose [] .

int strpos [ string $haystack , mixed $needle [, int $offset = 0 ] ]

THẬN TRỌNG:

Nếu kim bạn đang tìm kiếm ở đầu đống cỏ khô, nó sẽ trả về vị trí 0, nếu bạn thực hiện một phép ==so sánh sẽ không hoạt động, bạn sẽ cần phải thực hiện===

Một ==dấu hiệu là một so sánh và kiểm tra xem biến / biểu thức / hằng ở bên trái có cùng giá trị với biến / biểu thức / hằng ở bên phải hay không.

Một ===dấu hiệu là một so sánh để xem liệu hai biến / expresions / hằng có bằng nhau ANDcó cùng loại hay không - tức là cả hai đều là chuỗi hoặc cả hai đều là số nguyên.

107 hữu ích 1 bình luận chia sẻ

answer

58

Nhìn vàostrpos[] :

Chủ Đề