varias - ¿Cómo puedo verificar si una palabra está contenida en otra cadena usando PHP?
strpos php (10)
@mrclay
no puedo, simplemente lo hacemos
"/(?:^|/w+)" . preg_quote($word, ''/'') . "(?:$|/w+)/i"
para que compruebe el inicio o el espacio en blanco, y el espacio en blanco o final.
Pseudo Código
text = "I go to school";
word = "to"
if ( word.exist(text) ) {
return true ;
else {
return false ;
}
Estoy buscando una función de PHP que devuelva verdadero si la palabra existe en el texto.
Después de buscar tantas veces una versión php adecuada, decido escribir mi propia función contains (con más de un parámetro de agujas) y es bueno recordarla.
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);
}
La descripción de php contiene:
contains($str,$arg)
$str: The string to be searched
$arg: The needle, more arguments divided by ''|''
Ejemplos:
$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.";
Otra forma (además de los ejemplos de strpos ya dados es usar la función ''strstr'':
if (strstr($haystack, $needle)) {
return true;
} else {
return false;
}
Puedes usar estas funciones de cadena,
strstr - Encuentra la primera aparición de una cadena
stristr - stristr insensible a mayúsculas y minúsculas ()
strrchr - Encuentra la última aparición de un personaje en una cadena
strpos - Encuentra la posición de la primera aparición de una subcadena en una cadena
strpbrk - Busca una cadena para cualquiera de un conjunto de caracteres
Si eso no ayuda, entonces debes usar la expresión regular preg
preg_match - Realiza una coincidencia de expresión regular
Usted tiene algunas opciones dependiendo de sus necesidades. Para este simple ejemplo, strpos()
es probablemente la función más simple y más directa de usar. Si necesita hacer algo con el resultado, puede preferir strstr()
o preg_match()
. Si necesita usar un patrón complejo en lugar de una cadena como aguja, querrá preg_match()
.
$needle = "to";
$haystack = "I go to school";
Método strpos () y stripos () (stripos () no distingue entre mayúsculas y minúsculas):
if (strpos($haystack, $needle) !== false) echo "Found!";
strstr () y stristr () método (stristr no distingue entre mayúsculas y minúsculas):
if (strstr($haystack, $needle)) echo "Found!";
Método preg_match (expresiones regulares, mucho más flexible pero más lento):
if (preg_match("/to/", $haystack)) echo "Found!";
Debido a que solicitó una función completa, así es como lo uniría (con los valores predeterminados para needle y haystack):
function match_my_string($needle = ''to'', $haystack = ''I go to school'') {
if (strpos($haystack, $needle) !== false) return true;
else return false;
}
Utilice la función strpos
en php.
$text = "I go to school";
$word = "to"
if (strpos($text,$word)) {
echo ''true'';
}
utilizar:
return (strpos($text,$word) !== false); //case-sensitive
o
return (stripos($text,$word) !== false); //case-insensitive
<?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);
La página de manual que necesita para encontrar el uso correcto de strpos
function hasWord($word, $txt) {
$patt = "/(?:^|[^a-zA-Z])" . preg_quote($word, ''/'') . "(?:$|[^a-zA-Z])/i";
return preg_match($patt, $txt);
}
Si $ word es "a", esto coincidirá:
- "Escúchame"
- "A la Luna"
- "hasta el minuto"
pero no:
- "Juntos"
- "En el espacio"