Überprüfen auf Sonderzeichen mitten im Wort?

jackie05

Erfahrenes Mitglied
Hallo,
ich habe folgendes problem und zwar, möchte ich auf Sonderzeichen prüfen im Wort.

Beispiel:
Gr?n?

EDIT: Oder kann man auch einen Satz auf Sonderzeichen prüfen, also mitten im Wort?
Wieso ist das so sch?n?

also es soll nur mitten im Wort geprüft werden, nicht am ende oder am anfang des Wortes.

Ich wäre euch sehr dankbar, wenn mir einer helfen könnte.

MfG
 
Zuletzt bearbeitet:
mit substr kannst du lediglich einen Teil von einem Begriff ausgeben lassen
http://www.php.net/manual/de/function.substr.php
PHP:
$vomsechstenbistzumzwoelftenbuchstaben = substr($text, 5,11 );

man kann genausogut sagen, vom Ersten bis zum Vorletzten
PHP:
$dings= substr($text, 0, -1 );


dann gibts auch noch
http://www.php.net/manual/de/function.explode.php

PHP:
$teil=explode("|",$auszugebendertext);
echo "erster Begriff:".$teil[0]."Zweiter:".$teil[1]."Dritter:".$teil[2]."etc";

du koenntest nun jedes $teil[muster] mit

PHP:
$diesisteintest = strpos ('diesistdermustertext', "der");
if ($diesisteintest === false) { # drei Gleichheitszeichen
#nix gefunden #String ist nicht vorhanden
}

kontrollieren, ob deine Sonderzeichen vorhanden sind


allerdings gibts sicher angenehmere Loesungen,... kann mir allerdings auch vorstellen, dass sowas ziemlich ressourcenfressend ist...
hast du mal daran gedacht bestimmte Buchstaben einfach mit Anderen zu ersetzen, als zu gucken, ob die ueberhaupt da sind
z.B.
PHP:
$text=str_replace("a", "b", $text);# ersetzt alle As mit Bs
 
Zuletzt bearbeitet:
Hi,

ich tippe mal darauf, dass Du Sonderzeichen im Wort in entsprechenden HTML-Syntax ersetzen möchtest.

Code:
$string = "Test: ä Ä";
$string = str_replace(array('ä', 'Ä',), array('ä', 'Ä'), $string);
echo $string;

Falls Du einfach wissen mchtest ob "nicht erlaubte Zeichen" im String stehen (z.B. Validierung von einem Formular)

Code:
if(preg_match("/^[a-zA-Z]$/",$string))
    echo "String OK";
else
    echo "nicht erlaubte Zeichen im String";

preg_match ist sehr mächtig, so kannst Du auch die Struktur und Stringlänge valiedieren lassen:
http://de.php.net/manual/de/function.preg-match.php

Gruß tyg3r
 
Definiere Sonderzeichen.

PHP:
<?php

$foo = "ävdfvdfvbö";
$bar = "dvsvdäääsdcvd";

echo preg_match('#^[a-z0-9]*$#i', substr($foo, 1, -1));
echo preg_match('#^[a-z0-9]*$#i', substr($bar, 1, -1));

?>

Dieses hier würde dir z. B. beim ersten true zurückliefern und beim zweiten false.

Für weiterführende Validierung gibt es übrigens auch die Character Type Funktionen von PHP.

/edit: Ja, mal wieder zu langsam ;)
 
Sonderzeichen sind meiner Ansicht nach Zeichen, die weder Buchstaben noch Ziffern noch Leerzeichen sind.

Es wäre im ürbigen auch sehr interressant zu erfahren wie du das Problem gelöst hast.

Lg Joe
 
Sonderzeichen sind meiner Ansicht nach Zeichen, die weder Buchstaben noch Ziffern noch Leerzeichen sind.

Es wäre im ürbigen auch sehr interressant zu erfahren wie du das Problem gelöst hast.

Lg Joe

Nein stimmt nicht ganz.
Umlaute (ä,ö,ü auch ß) zählen zu den Sonderzeichen, sind aber genauso Buchstaben.
Die älteren ISO Formate unterstützen diese Umlaute nicht, müssen deshalb ersetzt werden.
Anfangs hat man die für Browser in verträgliche Zeichen formatiert (z.b. ä zu &auml; ).
Heute sollte man aber lieber auf andere Formate zurückgreifen, z.b. UTF-8.
 
Zuletzt bearbeitet:
@Tyg3r

if(preg_match("/^[a-zA-Z]$/",$string))
echo "String OK";
else
echo "nicht erlaubte Zeichen im String";

ich glaube, dem code mangelt es am "!" oder die aussgabe ist vertauscht...

if ( ! preg_match( "/^[a-zA-Z]$/", $string ) ) { ... }
 
Zurück