86 votos

PHP: Cómo comprobar si una cadena comienza con una cadena especificada?

Estoy tratando de comprobar si una cadena comienza con http. ¿Cómo puedo hacer esta comprobación?

$string1 = 'google.com';
$string2 = 'http://www.google.com';

144voto

Kendall Hopkins Puntos 12193
substr( $string_n, 0, 4 ) === "http"

Si usted está tratando de asegurarse de que no es otro protocolo. Yo uso la http:// , ya https también coinciden, y otras cosas tales como http-protocol.com.

substr( $string_n, 0, 7 ) === "http://"

138voto

awgy Puntos 3834

Uso strpos():

if (0 === strpos($string2, 'http')) {
   // It starts with 'http'
}

Recuerde que el tres es igual a los signos (===). No funcionará correctamente si sólo vas a usar dos. Esto es debido a que strpos() volverá false si la aguja no se encuentra en el pajar.

10voto

user276648 Puntos 850

Usted puede utilizar un simple regex (versión actualizada de usuario virathus como eregi está en desuso)

if (preg_match('#^http#', $url) === 1) {
    // Starts with http (case sensitive).
}

o si quieres una de mayúsculas y minúsculas de búsqueda

if (preg_match('#^http#i', $url) === 1) {
    // Starts with http (case insensitive).
}

Expresiones regulares permiten realizar tareas más complejas

if (preg_match('#^https?://#i', $url) === 1) {
    // Starts with http:// or https:// (case insensitive).
}

Rendimiento de los sabios, no es necesario crear una nueva cadena (a diferencia de con substr) ni analizar toda la cadena si no se inicia con lo que usted desea. Usted tendrá una penalización de rendimiento a pesar de que la 1ª vez que utilice el regex (usted necesita para crear o compilar).

Esta extensión mantiene un mundial por hilo de caché de compilado regular las expresiones (hasta 4096). http://www.php.net/manual/en/intro.pcre.php

2voto

Sid Puntos 578

también existe la strncmp() la función y strncasecmp() función, perfecto para esta situación.

0voto

Jake Puntos 741

Es muy sencillo, como el de abajo. . .

$Submitted = "http://www.google.com";

//If string start's with http://
if(substr($Submitted, 0, 7) == "http://") {
     $HTTP = "True";
} else { $HTTP = "False"; }


//If string start's with https://
if(substr($Submitted, 0, 8) == "https://") {
     $HTTPS = "True";
} else { $HTTPS = "False";

echo "Url contains http:// | ${HTTP}";//Which would return true or false
echo "Url contains https:// | ${HTTPS}";//Which would return true or false

Ver el substr() y la función de si la instrucción en php.net para obtener más información.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X