function contiene_palabra($texto, $palabra){
if (preg_match('*\b' . preg_quote($palabra) . '\b*i', $texto, $matches, PREG_OFFSET_CAPTURE)){
return $matches[0][1];
}
return -1; // -1 cuando no se encuentra
}
if (($pos = contiene_palabra($texto,$palabra)) >= 0) {
echo "'$texto' contiene la palabra '$palabra' en la posición $pos.\n";
} else {
echo "No se encuentra la palabra '$palabra' en '$texto'.\n";
}
您可以使用函数 来执行此操作,该函数
strpos
允许您查找子字符串在字符串中第一次出现的位置,即一个字符串在另一个字符串中第一次出现的位置。如果没有找到该位置,它将返回
false
。Error404 的答案是最好的(使用
strpos
,stripos
或strstr
),作为替代,我将建议使用正则表达式,preg_match
并且它在其他情况下很有用(例如,如果您需要搜索某些模式而不是特定字符串)和尽管它适用于您的特定情况,但不建议这样做,因为它会更慢。因此,您可以执行以下操作:
另一种选择是使用函数strstr(String string,String search) 在另一个字符串中查找第一次出现的字符串,如果找到所查找的值,则返回该值,否则返回空字符串。对于这一切,应用函数strlen(String string)来获取字符串的长度(如果它大于 0,则找到它)
上面的函数是区分大小写的,如果你想让它不重要,使用函数stristr(String string,String search)
和函数用于查找
stripos
子字符串。 例如,他们会在里面找到这个词。strpos
strstr
"la"
"hola mundo"
如果要查找单词,则必须检查单词前后是否没有字母数字字符。使用正则表达式,断言
\b
在这些位置匹配。演示:http: //ideone.com/W8OJG5
请注意,
$palabra
它不应该有以下任何正则表达式元字符,如果有,可能会失败。这是一个安全版本:
并且,要知道在哪个位置找到单词:
演示:http: //ideone.com/7Jh4nX
更新 2022 和 PHP 8。
另一种选择是使用str_contains() (PHP 8.0+)。见规范。
您可以直接使用multibyte,因此不需要版本
mb_*
它是区分大小写的,因此如果需要,请进行先前的转换。