Псевдокод
text = "I go to school";
word = "to"
if ( word.exist(text) ) {
return true ;
else {
return false ;
}
Я ищу функцию PHP, которая возвращает true, если слово существует в тексте.
Псевдокод
text = "I go to school";
word = "to"
if ( word.exist(text) ) {
return true ;
else {
return false ;
}
Я ищу функцию PHP, которая возвращает true, если слово существует в тексте.
У вас есть несколько вариантов в зависимости от ваших потребностей. Для этого простого примера strpos()
, вероятно, является самой простой и самой прямой функцией для использования. Если вам нужно что-то сделать с результатом, вы можете предпочесть strstr()
или preg_match()
. Если вам нужно использовать сложный шаблон вместо строки в качестве иглы, вам понадобится preg_match()
.
$needle = "to";
$haystack = "I go to school";
метод strpos() и stripos() (stripos() нечувствителен к регистру):
if (strpos($haystack, $needle) !== false) echo "Found!";
метод strstr() и stristr() (stristr не зависит от регистра):
if (strstr($haystack, $needle)) echo "Found!";
метод preg_match (регулярные выражения, гораздо более гибкие, но медленнее):
if (preg_match("/to/", $haystack)) echo "Found!";
Поскольку вы попросили выполнить полную функцию, так вы объедините это (со значениями по умолчанию для иглы и стога сена):
function match_my_string($needle = 'to', $haystack = 'I go to school') {
if (strpos($haystack, $needle) !== false) return true;
else return false;
}
использование:
return (strpos($text,$word) !== false); //case-sensitive
или
return (stripos($text,$word) !== false); //case-insensitive
function hasWord($word, $txt) {
$patt = "/(?:^|[^a-zA-Z])" . preg_quote($word, '/') . "(?:$|[^a-zA-Z])/i";
return preg_match($patt, $txt);
}
Если $word является "to", это будет соответствовать:
но не:
<?php
$text = "I go to school";
$word = "to"
$pos = strpos($text, $word);
if ($pos === false) {
return false;
} else {
return true;
}
?>
$text="I go to school";
return (strpos($text, 'to')!== false);
На странице руководства вам нужно найти правильное использование strpos
Другой способ (помимо уже приведенных примеров strpos - использовать функцию strstr):
if (strstr($haystack, $needle)) {
return true;
} else {
return false;
}
Вы можете использовать эти строковые функции,
strstr - Найти первое вхождение строки
stristr - нечувствительность к регистру strstr()
strrchr - найти последнее вхождение символа в строке
strpos - найти позицию первого вхождения подстроки в строке
strpbrk - Поиск строки для любого из набора символов
Если это не поможет, вы должны использовать preg
регулярное выражение
preg_match - выполнить регулярное выражение соответствия
cant 'мы просто делаем
"/(?:^|\w+)" . preg_quote($word, '/') . "(?:$|\w+)/i"
чтобы он либо проверял начало, либо пробел, и конец или пробел.
После многократного поиска подходящей версии php я решил написать свою собственную функцию contains (с несколькими иглами параметров) и хорошо запомнить.
function contains($str,$contain)
{
if(stripos($contain,"|") !== false)
{
$s = preg_split('/[|]+/i',$contain);
$len = sizeof($s);
for($i=0;$i < $len;$i++)
{
if(stripos($str,$s[$i]) !== false)
{
return(true);
}
}
}
if(stripos($str,$contain) !== false)
{
return(true);
}
return(false);
}
Описание php содержит:
contains($str,$arg)
$str: The string to be searched
$arg: The needle, more arguments divided by '|'
Примеры:
$str = 'green house';
if(contains($str,"green"))
echo "we have a green house.";
else
echo "our house isn't green";
$str = 'green, blue, red houses';
if(contains($str,"green|red"))
echo "we have a green or red house.";
else
echo "we have a blue house.";
Используйте функцию strpos
в php.
$text = "I go to school";
$word = "to"
if (strpos($text,$word)) {
echo 'true';
}