Giải pháp: strpos
hóa ra là hiệu quả nhất. Có thể được thực hiện với substr
nhưng điều đó tạo ra một chuỗi con tạm thời. Cũng có thể được thực hiện với regex, nhưng chậm hơn strpos và không luôn luôn sản xuất câu trả lời đúng nếu từ chứa meta-ký tự (xem Ayman Hourieh bình luận).khớp một từ với đuôi bằng strpos
câu trả lời Chosen:
if(strlen($str) - strlen($key) == strrpos($str,$key))
print "$str ends in $key"; // prints Oh, hi O ends in O
và tốt nhất để kiểm tra bình đẳng nghiêm ngặt ===
(xem David câu trả lời)
Nhờ tất cả để giúp đỡ.
Tôi đang cố gắng đối sánh một từ trong chuỗi để xem liệu từ đó có xuất hiện ở cuối chuỗi đó hay không. Thông thường strpos($theString, $theWord);
sẽ không làm điều đó.
Về cơ bản nếu $theWord = "my word";
$theString = "hello myword"; //match
$theString = "myword hello"; //not match
$theString = "hey myword hello"; //not match
Điều gì sẽ là cách hiệu quả nhất để làm điều đó?
P.S. Trong tiêu đề tôi đã nói strpos
, nhưng nếu một cách tốt hơn tồn tại, đó là ok quá.
Bạn có ý gì bởi "từ"? Văn bản phân tách không gian? Khóa "foo" có khớp với "barfoo" hay chỉ "bar foo" không? –
@Nick, nếu '$ word =" foo ";' thì cả hai '$ sentence =" barfoo "hoặc" bar foo ";' vẫn nên 'khớp'. Nó không quan trọng trong trường hợp này nếu nó có một không gian trước khi nó hay không. – clover
có thể trùng lặp của [Kiểm tra hiệu quả nhất cho dù chuỗi PHP kết thúc bằng một chuỗi khác là gì?] (Http://stackoverflow.com/questions/619610/whats-the-most-efficient-test-of-whether-a- php-string-ends-with-another-string) – Gajus