2

如何检查一个句子是否包含一个单词。我明确地使用名称句子和单词而不是字符串和子字符串。例如:对于句子

$s = "Ala makota, a kot ma przesrane";

调用函数

checkIfContains("kota",$s) 

返回假。

但对于

checkIfContains("makota",$s) 

返回真。

4

6 回答 6

6

如果您只想匹配完整的单词,则需要一个正则表达式来完成此操作。尝试以下操作:

<?php
function checkIfContains( $needle, $haystack ) {
    return preg_match( '#\b' . preg_quote( $needle, '#' ) . '\b#i', $haystack ) !== 0;
}
于 2012-09-20T11:34:44.063 回答
1

你需要strpos.

if (strpos($s, 'kota') !== false) { 

}

或者如果你坚持..

function checkIfContains($needle, $haystack) {
    return (strpos($haystack, $needle) !== false);
}

对于完整的单词,您可以考虑正则表达式:

if (preg_match('/\bkota\b/i', $s)) { }
于 2012-09-20T11:26:18.683 回答
0

我会使用explode 将字符串分隔为基于字符的数组(在本例中为“”)。

function checkIfContains($toTest, $toCheck)
{
    // Check if length of either string is zero for validation purposes
    if(strlen($toTest) == 0 || strlen($toCheck) == 0)
    {
        return false;
    }
    $exploded = explode(" ", $toCheck);
    foreach($exploded as $word)
    {
         if($word == $toTest)
         {
              // Found a match, return true!
              return true;
         }
    }
    // None matched, return false
    return false;
}
于 2012-09-20T11:36:57.903 回答
0

你可以试试 :

function checkIfContains($needle, $haystack) {
    // Remove punctuation marks
    $haystack = preg_replace('/[^a-zA-Z 0-9]+/', '', $haystack);
    // Explode sentence with space
    $haystack = explode(' ', $haystack);
    // Check if $needle exist
    return in_array($needle, $haystack);
}
于 2012-09-20T12:19:27.373 回答
0
$string = "Ala makota, a kot ma przesrane";

checkIfInString("makota", $string);

function checkIfInString($needle, $haystack) {
    $delimiters = ' ,.';
    return in_array($needle, explode($haystack, $delimiters);
}
于 2012-09-20T13:03:03.540 回答
0

你可以试试:

if(strpos($s,"kota") !== false){
       echo true;
}

或者 :

function checkIfContains($string, $letter){
       return strpos($string, $letter) !== false;
}
于 2021-03-28T15:41:22.260 回答