Cómo verificar si una cadena contiene un texto específico [duplicate]

3 minutos de lectura

avatar de usuario
lucas fernandes

<?php
$a="";

if($a exist 'some text')
    echo 'text';
?>

Supongamos que tengo el código anterior, cómo escribir la declaración if($a exist 'some text')?

  • Te refieres a esto: if($a == 'some text') . Aquí más información sobre los operadores: php.net/manual/en/language.operators.comparison.php

    – stUrb

    8 de marzo de 2013 a las 23:49


  • Si el tamaño de la cadena es mayor que 0, entonces la cadena tiene algo de texto.

    – Mohamed Abrar Ahmed

    16 de octubre de 2017 a las 7:59

  • Si está verificando la cadena si tiene algún texto, entonces esto debería funcionar if(strlen($a) > 0) echo 'text'; o si su preocupación es verificar una palabra específica, siga la respuesta de @Dai.

    – Mohamed Abrar Ahmed

    16 de octubre de 2017 a las 8:01


avatar de usuario
dai

Utilizar el strpos función: http://php.net/manual/en/function.strpos.php

$haystack = "foo bar baz";
$needle   = "bar";

if( strpos( $haystack, $needle ) !== false) {
    echo "\"bar\" exists in the haystack variable";
}

En tu caso:

if( strpos( $a, 'some text' ) !== false ) echo 'text';

Tenga en cuenta que mi uso de la !== operador (en lugar de != false o == true o incluso solo if( strpos( ... ) ) {) se debe a la “verdadero”/”falso” naturaleza del manejo de PHP del valor de retorno de strpos.

A partir de PHP 8.0.0 ahora puede usar str_contiene

<?php
    if (str_contains('abc', '')) {
        echo "Checking the existence of the empty string will always 
        return true";
    }

  • ¿Una no coincidencia no devolverá 0?

    – Leeish

    8 de marzo de 2013 a las 23:52

  • false >= 0. Tu tienes que escribir !== falsecomo 0 == false.

    – Licuadora

    8 de marzo de 2013 a las 23:54

  • @Blender lo siento, tienes razón. Estaba pensando en .NET String.IndexOf que regresa -1 en caso de no coincidencia. He corregido mi respuesta.

    – Dai

    9 de marzo de 2013 a las 1:54

  • Y stripos() por insensible comparación de cadenas…

    – Patros

    4 sep 2017 a las 15:21


  • @PadronizaçãoSA La ! operador afectará la falsedad del valor de retorno de strpos lo que significa === no funcionará de la manera prevista.

    – Dai

    27 de junio de 2018 a las 15:04

Las cadenas vacías son falsas, por lo que solo puede escribir:

if ($a) {
    echo 'text';
}

Aunque si está preguntando si existe una subcadena particular en esa cadena, puede usar strpos() Para hacer eso:

if (strpos($a, 'some text') !== false) {
    echo 'text';
}

  • Además, si desea que encuentre “Algún texto”, “ALGUNO TEXTO”, etc. use stripos (que no distingue entre mayúsculas y minúsculas)

    – Dave

    9 de marzo de 2013 a las 0:02

http://php.net/manual/en/function.strpos.php Creo que te preguntas si existe ‘algún texto’ en la cadena, ¿verdad?

if(strpos( $a , 'some text' ) !== false)

Si necesita saber si existe una palabra en una cadena, puede usar esto. Como no queda claro a partir de su pregunta si solo desea saber si la variable es una cadena o no. Donde ‘palabra’ es la palabra que está buscando en la cadena.

if (strpos($a,'word') !== false) {
echo 'true';
}

o use el método is_string. Que devuelve verdadero o falso en la variable dada.

<?php
$a="";
is_string($a);
?>

Puedes usar strpos() o stripos() para verificar si la cuerda contiene la aguja dada. Devolverá la posición donde se encontró, de lo contrario devolverá FALSO.

Usa los operadores === o `!== para diferir FALSO de 0 en PHP.

avatar de usuario
Kermit

Puedes usar el == operador de comparación para comprobar si la variable es igual al texto:

if( $a == 'some text') {
    ...

También puedes usar strpos función para devolver la primera aparición de una cadena:

<?php
$mystring = 'abc';
$findme="a";
$pos = strpos($mystring, $findme);

// Note our use of ===.  Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
} else {
    echo "The string '$findme' was found in the string '$mystring'";
    echo " and exists at position $pos";
}

Ver documentación

¿Ha sido útil esta solución?