2012-02-02 30 views
20

Trong SQL, chúng tôi có NOT LIKE %string%Kiểm tra xem một chuỗi có chứa một từ trong PHP không?

tôi cần thực hiện việc này bằng PHP.

if ($string NOT LIKE %word%) { do something }

tôi nghĩ rằng có thể được thực hiện với strpos()

nhưng couldnt tìm ra cách ..

tôi cần chính xác điều đó câu comparission trong PHP hợp lệ.

if ($string NOT LIKE %word%) { do something }

Cảm ơn

+0

tôi cập nhật tiêu đề để phản ánh tốt hơn câu hỏi. Các ngữ nghĩa chính xác của từ phù hợp cũng nên được đặt ra. Có thể tốt hơn khi sử dụng '\ bword \ b' hoặc' \ bword | word \ b' trong một số trường hợp nhất định. –

+0

có thể trùng lặp của [Kiểm tra xem chuỗi có chứa các từ cụ thể không?] (Http://stackoverflow.com/questions/4366730/check-if-string-contains-specific-words) – Jeroen

Trả lời

47
if (strpos($string, $word) === FALSE) { 
    ... not found ... 
} 

Lưu ý rằng strpos() là trường hợp nhạy cảm, nếu bạn muốn tìm kiếm case-insensitive, sử dụng stripos() để thay thế.

Cũng lưu ý ===, buộc kiểm tra bình đẳng nghiêm ngặt. strpos CÓ THỂ trả lại giá trị 0 nếu chuỗi 'kim' ở đầu 'haystack'. Bằng cách buộc một kiểm tra cho một boolean sai thực sự (aka 0), bạn loại bỏ rằng dương tính giả.

+0

lưu ý rằng% word% là một ký tự đại diện, không phải là biến ... chuỗi $ chứa địa chỉ IP ở dạng char, như $ string = 123.456.789.100 và tôi muốn loại trừ (KHÔNG THÍCH) những người bắt đầu bằng 123.456% –

+0

@LucasMatos Sau đó, '$ word =" word "' sau đó ... trong khi nó là một ký tự đại diện, nó là một cách sử dụng rất nhỏ ("kết thúc trôi nổi") mà 'strpos' bao gồm (và thực tế nó là * vì * của' strpos' hoạt động ở đây!). '$ word =" a? b "' sẽ không hoạt động với cách tiếp cận này, nếu '?' có nghĩa là "khớp với bất kỳ ký tự nào", ví dụ –

+2

@LUcas: nên đã nói như vậy trong câu hỏi, sau đó. Ví dụ đơn giản nhận được câu trả lời đơn giản. –

16

Sử dụng strpos. Nếu không tìm thấy chuỗi, nó trả về false, nếu không, không phải là một cái gì đó không phải là false. Hãy chắc chắn để sử dụng một loại an toàn so sánh (===) như 0 có thể được trả lại và nó là một giá trị falsy:

if (strpos($string, $substring) === false) { 
    // substring is not found in string 
} 

if (strpos($string, $substring2) !== false) { 
    // substring2 is found in string 
} 
1
<?php 
// Use this function and Pass Mixed string and what you want to search in mixed string. 
// For Example : 
    $mixedStr = "hello world. This is john duvey"; 
    $searchStr= "john"; 

    if(strpos($mixedStr,$searchStr)) { 
     echo "Your string here"; 
    }else { 
     echo "String not here"; 
    } 
+0

Điều này sẽ thất bại nếu $ searchStr là lúc bắt đầu $ mixedStr. Trong ví dụ đó, nếu bạn tìm kiếm "hello", bạn sẽ echo "String not here", khiến strpos sẽ trả về 0, sẽ phân nhánh thành điều kiện khác. Luôn sử dụng === khi kiểm tra giá trị trả lại của strpos. –

0

use 
 

 
if(stripos($str,'job')){ 
 
    // do your work 
 
}

+1

Giống như câu trả lời trước !!! –

+0

@RohitGupta Không, anh ta có mẫu đoạn mã. – a20

Các vấn đề liên quan