Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP strcspn(): Anfangssegment ohne bestimmte Zeichen ermitteln

Sie befinden sich: Home > Php Tutorial > Anfangssegment ohne...

Anfangssegment ohne bestimmte Zeichen ermitteln mit strcspn()


Eintrag am:  18.11.2009
Hits / Besucher:  5084
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die PHP-Funktion strcspn() gibt die Länge des Anfangssegments einer Zeichenkette zurück, das keines der angegebenen Zeichen enthält. Der Name steht für “string complement span” – also die Länge des Bereichs, der das Komplement (Gegenteil) der angegebenen Zeichen abdeckt.

Syntax

int strcspn(string $string, string $characters, int $offset = 0, ?int $length = null)

Parameter:

  • $string – Die zu durchsuchende Zeichenkette
  • $characters – Eine Liste von Zeichen, nach denen gesucht wird
  • $offset (optional) – Startposition in $string
  • $length (optional) – Maximale Länge des zu durchsuchenden Bereichs

Rückgabewert: Die Anzahl der Zeichen am Anfang von $string (bzw. ab $offset), die nicht in $characters vorkommen.

Beispiel 1: Grundlegende Verwendung

<?php

$text = 'Hello World';

/* Wie viele Zeichen am Anfang sind KEINE Vokale? */
echo strcspn($text, 'aeiou');
/* Ausgabe: 1 (nur "H", denn "e" an Position 1 ist ein Vokal) */

/* Wie viele Zeichen am Anfang enthalten kein Leerzeichen? */
echo strcspn($text, ' ');
/* Ausgabe: 5 ("Hello" = 5 Zeichen vor dem Leerzeichen) */
?>

Beispiel 2: Position des ersten Sonderzeichens

<?php

$text = 'Hallo, wie geht es?';
$sonderzeichen = ',.!?;:';

$position = strcspn($text, $sonderzeichen);
echo "Erstes Sonderzeichen an Position: $position";
/* Ausgabe: Erstes Sonderzeichen an Position: 5 */
/* (Das Komma nach "Hallo" steht an Index 5) */
?>

strcspn() vs. strspn()

FunktionZähltBeispiel
strcspn()Zeichen, die nicht in der Liste sindstrcspn('abc123', '0123456789') = 3
strspn()Zeichen, die in der Liste sindstrspn('abc123', 'abc') = 3

Hinweis

strcspn() unterscheidet zwischen Groß- und Kleinschreibung. Wenn Sie eine Prüfung unabhängig von der Schreibweise benötigen, wandeln Sie beide Strings vorher mit strtolower() um.

Beispiel 3: Eingabevalidierung mit strcspn()

Ein typischer Anwendungsfall für strcspn() ist die Validierung von Benutzereingaben. Sie können damit prüfen, ob eine Zeichenkette unerlaubte Zeichen enthält. Wenn der Rückgabewert von strcspn() gleich der Länge des gesamten Strings ist, bedeutet das: Keines der verbotenen Zeichen kommt darin vor.

<?php

$benutzername = 'MaxMuster123';
$verboten = ' !@#$%^&*()+=';

if (strcspn($benutzername, $verboten) === strlen($benutzername)) {
echo 'Benutzername ist gueltig.';
} else {
echo 'Benutzername enthaelt ungueltige Zeichen.';
}
/* Ausgabe: Benutzername ist gueltig. */

$ungueltig = 'Max Muster!';
if (strcspn($ungueltig, $verboten) === strlen($ungueltig)) {
echo 'Gueltig.';
} else {
$pos = strcspn($ungueltig, $verboten);
echo 'Ungueltiges Zeichen an Position: ' . $pos;
}
/* Ausgabe: Ungueltiges Zeichen an Position: 3 */
?>

Im ersten Fall enthält der Benutzername keine verbotenen Zeichen, strcspn() gibt also die volle Länge des Strings zurück. Im zweiten Fall steht an Position 3 ein Leerzeichen, das in der Liste der verbotenen Zeichen enthalten ist.

Die optionalen Parameter $offset und $length

Mit dem dritten und vierten Parameter können Sie den Suchbereich innerhalb des Strings einschränken. Der Offset gibt die Startposition an, ab der gesucht wird. Die Länge begrenzt den Bereich auf eine bestimmte Anzahl von Zeichen.

<?php

$text = 'abc-def-ghi';

/* Ab Position 4 suchen (also in "def-ghi") */
echo strcspn($text, '-', 4);
/* Ausgabe: 3 ("def" hat 3 Zeichen vor dem naechsten "-") */

/* Ab Position 0, nur die ersten 3 Zeichen pruefen */
echo strcspn($text, '-', 0, 3);
/* Ausgabe: 3 ("abc" enthaelt keinen Bindestrich) */
?>

Praxisbeispiel: Sicheren Dateinamen prüfen

Bei der Verarbeitung von Datei-Uploads müssen Dateinamen auf potenziell gefährliche Zeichen geprüft werden. Mit strcspn() lässt sich schnell feststellen, ob ein Dateiname nur erlaubte Zeichen enthält.

<?php

function ist_sicherer_dateiname($name) {
$gefaehrlich = '../:*?"<>|';
return strcspn($name, $gefaehrlich) === strlen($name);
}

var_dump(ist_sicherer_dateiname('bild_2024.jpg'));
/* Ausgabe: bool(true) */

var_dump(ist_sicherer_dateiname('../geheim.txt'));
/* Ausgabe: bool(false) */
?>

Die Funktion prüft, ob der Dateiname Zeichen wie Punkte in Kombination mit Schrägstrichen, Sternchen oder Anführungszeichen enthält. Sobald eines dieser Zeichen auftaucht, gibt strcspn() einen Wert kleiner als die Stringlänge zurück.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.