Nueva pregunta

Pregunta:

Fecha: 04-04-2018 09:59:55 (En Español)

Pregunta de Certificación PHP - retorno de la función strpos()[Resuelta]

¿Qué imprimirá el siguiente código?
<?php
$str = 'abcdef';
if (strpos($str, 'a')) {
	echo "Encontré la letra 'a'";
} else {
	echo "No se pudo encontrar la letra 'a'";
}




Saludos a todos y buen código!
Etiquetas: Certificación - Certificación PHP - Empezar a programar - PHP - Pregunta Votos: 2 - Respuestas: 9 - Vistas: 23 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 04-04-2018 11:05:57
    return false
    
      Votos: 0 - Link respuesta
     
  • Fecha: 04-04-2018 11:11:08 hola Ricardo, no es la respuesta, ¿alguien más?   Votos: 0 - Link respuesta
     
  • Fecha: 04-04-2018 11:19:17 No se pudo encontrar la letra 'a'   Votos: 2 - Link respuesta
     
  • Fecha: 04-04-2018 11:44:32 No se pudo encontrar la letra 'a' ya que en términos burdos la condición es
    if (0)
    {
    echo "Encontré la letra 'a'";
    } else {
    echo "No se pudo encontrar la letra 'a'";
    }
      Votos: 2 - Link respuesta
     
  • Fecha: 04-04-2018 13:05:48 Muy bueno el post. Con este tipo de "juegos" se aprende ;)
    El codigo imprime:
    No se pudo encontrar la letra 'a'

    Referencia:
    strpos() Encuentra la posición de la primera ocurrencia de un substring en un string. Es sensible a mayúsculas y minúsculas.

    strpos($str, 'a') devuelve 0 que sería la posición en donde fue encontrado la búsqueda, en este caso es 0 que no se encontró.
    y 0 No es True.

    Ahora jugando un poco con el codigo original, con unos leves cambios para hacerlo más práctico.

    <?php
    $str = 'abcdef a';
    $str_buscar = 'a';
    if (strpos($str, $str_buscar)) {
        echo "Encontré la letra '$str_buscar'";
    } else {
        echo "No se pudo encontrar la letra '$str_buscar'";
    }
    
    echo '<br> Posición '.strpos($str, $str_buscar);
    ?>
    


    Si bien en $str = 'abcdef a'; hay una 'a' sola se imprime:
    No se pudo encontrar la letra 'a'
    Posición 0

    Ahora si cambio la 'a' por ejemplo z, como en el siguiente codigo, el resultado es distinto.
    <?php
    $str = 'abcdef z';
    $str_buscar = 'z';
    if (strpos($str, $str_buscar)) {
        echo "Encontré la letra '$str_buscar'";
    } else {
        echo "No se pudo encontrar la letra '$str_buscar'";
    }
    
    echo '<br> Posición '.strpos($str, $str_buscar);
    ?>
    


    Se imprime:
    Encontré la letra 'z'
    Posición 7

    ¿Alguien puede explicar porque no encuentra la letra 'a' en el primer ejemplo, mientras que si cambio la letra 'a' por 'z' en el segundo ejemplo si la encuentra?

    Saludos
      Votos: 2 - Link respuesta
     
  • Fecha: 04-04-2018 17:59:37 Hola,

    Bueno esto es algo que pone a pensar demasiado, pero en si la respuesta es lógica gracias a @Walter, por el ejemplo.

    Y pues todo esto se remonta al código binario, ya que en este el "0" se conoce como algo "muerto" o en este caso un false cuando se hace una condicional, pero cualquier otro número siempre serán "positivos" o simplemente un true.

    Saludos
      Votos: 0 - Link respuesta
     
  • Fecha: 04-04-2018 18:14:03 Es una pregunta muy buena porque es un "common pitfall" que funciona bien en general pero tiene casos puntuales donde se manifiesta un bug (al encontrar el caracter en la posición 0), y saber este tipo de cosas es necesario.   Votos: 2 - Link respuesta
     
  • Fecha: 07-04-2018 08:44:27 La pocision de el substring a es igual a 0, por ende cuando hagas el if sera falso y ejecutara por consiguiente el else, si cambias el la pocision de a en el string si imprimiria el if seria true   Votos: 0 - Link respuesta
     
  • Fecha: 23-04-2019 08:57:58 respecto a esta función tengo el siguiente código
    $CuerpoDelCorreoTxt = "BL:859447 Hola buenos días  BL:454545 FechaEta:12/12/019 Factura:094740 Pedido:43893.
    Cordialmente.
    
    
    ALEXANDER  O.
    ";
    $PalabrasClaveArray = array('BL:', 'bl:', 'Factura:', 'FechaEta:', 'fechaeta:', 'Pedido:', 'pedido:', 'FIN', 'fin', 'Fin');
    
    foreach ($PalabrasClaveArray as $PalabrasClave) {
    
        $posicionPalabraClave = strpos($CuerpoDelCorreoTxt, $PalabrasClave);
    
        if ($posicionPalabraClave !== false) {
            echo $posicionPalabraClave . "=$PalabrasClave</br>"; #
    
        }
    }
    existe la posibilidad de encontrar la palabra clave repetida, es decil BL: esta repetida dos veces en la cadena de texto, pero es posible que me encuentre las dos posiciones ?
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com