考虑:

$a = 'How are you?';

if ($a contains 'are')
    echo 'true';

假设我有上面的代码,如果($a包含“are”),写语句的正确方法是什么?


当前回答

strpos函数工作得很好,但是如果您想对段落中的单词进行不区分大小写的检查,那么可以使用PHP的stripos函数。

例如

$result = stripos("I love PHP, I love PHP too!", "php");
if ($result === false) {
    // Word does not exist
}
else {
    // Word exists
}

查找字符串中不区分大小写的子字符串第一次出现的位置。

如果字符串中不存在该单词,则返回false,否则返回单词的位置。

其他回答

strpos函数工作得很好,但是如果您想对段落中的单词进行不区分大小写的检查,那么可以使用PHP的stripos函数。

例如

$result = stripos("I love PHP, I love PHP too!", "php");
if ($result === false) {
    // Word does not exist
}
else {
    // Word exists
}

查找字符串中不区分大小写的子字符串第一次出现的位置。

如果字符串中不存在该单词,则返回false,否则返回单词的位置。

如果搜索不区分大小写,则使用strstr()或stristr(。

要确定一个字符串是否包含另一个字符串,可以使用PHP函数strpos()。

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )`
<?php

$haystack = 'how are you';
$needle = 'are';

if (strpos($haystack,$needle) !== false) {
    echo "$haystack contains $needle";
}

?>

警告:

如果您正在搜索的针位于干草堆的开始位置,它将返回位置0,如果您进行==比较,但这不起作用,则需要执行===

A==符号是一个比较,用于测试左侧的变量/表达式/常量是否与右侧的变量/表达/常量具有相同的值。

A==符号是比较两个变量/表达式/常量是否相等并且具有相同的类型,即两者都是字符串或两者都是整数。

使用这种方法的优点之一是,与str_contains()不同,每个PHP版本都支持此函数。

更简单的选择:

return ( ! empty($a) && strpos($a, 'are'))? true : false;

我认为一个好主意是使用mb_stpos:

$haystack = 'How are you?';
$needle = 'are';

if (mb_strpos($haystack, $needle) !== false) {

    echo 'true';
}

因为此解决方案区分大小写,并且对所有Unicode字符都是安全的。


但你也可以这样做(sauch的回应还没有):

if (count(explode($needle, $haystack)) > 1) {

    echo 'true';
}

此解决方案对Unicode字符也区分大小写并安全。

此外,在表达式中不使用否定,这会增加代码的可读性。


以下是使用函数的其他解决方案:

function isContainsStr($haystack, $needle) {

    return count(explode($needle, $haystack)) > 1;
}

if (isContainsStr($haystack, $needle)) {

    echo 'true';
}