New question

Question:

Date: 04-04-2018 09:59:55 (In Spanish)

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

¿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!
Tags: Certification - PHP - PHP Certification - Question - Start in Programming Votes: 2 - Answers: 9 - Views: 23 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 04-04-2018 11:05:57
    return false
    
      Votes: 0 - Link answer
     
  • Date: 04-04-2018 11:11:08 hola Ricardo, no es la respuesta, ¿alguien más?   Votes: 0 - Link answer
     
  • Date: 04-04-2018 11:19:17 No se pudo encontrar la letra 'a'   Votes: 2 - Link answer
     
  • Date: 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'";
    }
      Votes: 2 - Link answer
     
  • Date: 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
      Votes: 2 - Link answer
     
  • Date: 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
      Votes: 0 - Link answer
     
  • Date: 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.   Votes: 2 - Link answer
     
  • Date: 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   Votes: 0 - Link answer
     
  • Date: 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 ?
      Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In