2010-12-11 20 views
18

Estoy seguro de que esta es una solución simple, simplemente no he encontrado exactamente lo que necesitaba.Comprueba si la variable comienza con 'http'

Usando php, tengo una fuente $ variable. Quiero verificar si $ source comienza con 'http'.

if ($source starts with 'http') { 
$source = "<a href='$source'>$source</a>"; 
} 

¡Gracias!

Respuesta

43
if (strpos($source, 'http') === 0) { 
    $source = "<a href=\"$source\">$source</a>"; 
} 

Nota utilizo ===, no == PORQUE strpos Boolean false si la cadena no contiene el partido. Zero es falsey en PHP, por lo que es necesaria una estricta verificación de igualdad para eliminar la ambigüedad.

Referencia:

http://php.net/strpos

http://php.net/operators.comparison

+3

confundido el pajar con la aguja. – Ben

+0

@Ben: buen trabajo, gracias. – Jonah

+0

Funcionó como un encanto. Muchas gracias por la respuesta rápida :) Y los enlaces extra para leer sobre strpos – Andelas

12

desea que la función substr().

if(substr($source, 0, 4) == "http") { 
    $source = "<a href='$source'>$source</a>"; 
} 
+0

Vaya, debe ser '0, 4', no' 4'. '4' obtendría todo _but_ el http :) – Jonah

+0

@Jonah: Estaba editando eso mientras escribía el comentario. ["¡Mierda! Siempre lo hago. Siempre estropeo algunos detalles mundanos". - Michael Bolton] (http://www.imdb.com/title/tt0151804/) – AgentConundrum

+0

Debería probarlo, creo que obtendrá toda la cadena * desde la * posición 4 –

5
if(strpos($source, 'http') === 0) 
    //Do stuff 
+0

Probablemente la forma más elegante de comprobar si una cadena comienza con alguna subcadena en PHP. – Robert

+0

Lolwut? ¿Realmente preguntas por qué y afirmas que 'strpos' (lo que acabo de comentar es la manera más elegante) es más claro? – Robert

+0

@Robert: Oh, jeje, leí mal. Pensé que estabas diciendo que la solución 'substr' era mejor. Mi error :) – Jonah

Cuestiones relacionadas