2010-12-11 8 views
18

Ich bin sicher, dass dies eine einfache Lösung ist, habe einfach nicht genau das gefunden, was ich brauchte.Überprüfen Sie, ob die Variable mit 'http' beginnt

Mit PHP habe ich eine Variable $ source. Ich möchte überprüfen, ob $ source mit 'http' beginnt.

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

Vielen Dank!

Antwort

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

Hinweis I === verwenden, nicht == weil strpos gibt ein boolsches false, wenn die Zeichenfolge nicht, das Spiel enthält. Zero ist in PHP falsch, daher ist eine strenge Gleichheitsprüfung erforderlich, um Mehrdeutigkeiten zu beseitigen.

Referenz:

http://php.net/strpos

http://php.net/operators.comparison

+3

Sie verwirrt den Heuhaufen mit der Nadel. – Ben

+0

@Ben: schöner Fang, danke. – Jonah

+0

Arbeitete wie ein Charme. Vielen Dank für die schnelle Antwort :) Und die zusätzlichen Links zu lesen über strpos – Andelas

12

Sie wollen die substr() Funktion.

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

Hoppla, muss '0, 4', nicht' 4' sein. '4' würde alles bekommen _but_ die http :) – Jonah

+0

@Jonah: Ich habe das bearbeitet, während du den Kommentar geschrieben hast. ["Scheiße! Das tue ich immer. Ich mache immer ein banales Detail durcheinander." - Michael Bolton] (http://www.imdb.com/title/tt0151804/) – AgentConundrum

+0

Sie sollten es testen, ich glaube, es wird die gesamte Zeichenfolge abrufen * von * Position 4 –

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

Wahrscheinlich der eleganteste Weg zu prüfen, ob ein String mit einem Teilstring in PHP beginnt. – Robert

+0

Lolwut? Du fragst wirklich warum und sagst, dass "strpos" (was ich gerade als den elegantesten Weg bezeichnet habe) klarer ist? – Robert

+0

@Robert: Oh, hehe, ich habe falsch gelesen. Ich dachte, Sie sagten, dass die 'substr'-Lösung besser ist. Mein Fehler :) – Jonah