11 Stimme

PHP: Beginnt String mit bestimmtem String oder Zeichen?

Frage von Gast | 04.02.2014 um 21:40

Ich würde gerne herausfinden, ob ein gegebener String mit einem bestimmten anderen String beginnt.

Also zum Beispiel ob bei einer Eingabe einer Internetadresse diese Adresse mit "http" oder "www" startet.

Leider habe ich dafür keine passende Funktion in PHP (strStart start oder so) gefunden. Kann mir jemand weiterhelfen?

AntwortenPositivNegativDatumStimmen
3Beste Antwort3 Stimmen

Gibt sicherlich mehrere Lösungen für dieses Problem. Eine davon ist:

$s = 'www.askingbox.de';

if (strpos($s, 'www') === 0) {
   // $s startet mit "www"
}

Die Funktion strpos() gibt die Position von dem Suchstring zurück. Ist die Position 0, so beginnt der String mit dem Suchstring.
07.02.2014 um 15:52

AntwortenPositiv Negativ
00 Stimmen

Man könnte auch substr() dazu nutzen. Ich nehme mal dasselbe Beispiel:

$s = 'www.askingbox.de';

if (substr($s, 0, 3) === 'www') {
  // $s startet mit "www"
}

if (substr($s, 0, 4) === 'http') {
  // $s startet mit "http"
}

Mit substr() schneidest du einen Teil vom String ab. Im ersten Fall im Beispiel oben beginnend beim ersten Zeichen die ersten drei Zeichen, im zweiten die ersten 4. Man muss also die 3 und 4 auf die Länge des Such-Strings anpassen.

Alternativ kann man natürlich auch allgemeiner schreiben:

if (substr($s, 0, strlen($s) === 'www') {
   // $s startet mit "www"
}

Hier habe ich die angegebene Länge mit strlen($s) ersetzt, so wird dynamisch die erforderliche Länge des Strings bestimmt.
10.02.2014 um 11:54

AntwortenPositiv Negativ
00 Stimmen

Ihr könnt auch einen Blick in meinen Beitrag über eine strStart und eine strEnd Funktion in PHP werfen.

Die strStart-Funktion macht genau das, was hier gefragt ist.
29.03.2014 um 21:14

AntwortenPositiv Negativ
11 Stimme

Und noch eine Möglichkeit, dieses mal mit strncmp():

$s = 'abcdefgh';
$search = 'abc';

if (strncmp($s, $search, strlen($search)) === 0) {
  // $s beginnt mit $search
}

Mit strncmp() vergleich man den String der als erster Parameter übergeben wird mit dem String des zweiten Parameters. Und zwar auf einer Länge wie im dritten Parameter bestimmt.

Das Ergebnis ist 0 für gleiche Strings.
29.03.2014 um 23:28

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.