Doppelte Eingabe eines bestimmten Sonderzeichens

Alice

Erfahrenes Mitglied
Hallo, ich hänge momentan am folgendem Code.

PHP:
if (preg_match('/!/', $var1)) {
   $var1 = ereg_replace('!','', $var1);
}

Das Funktioniert auch. Aber ich ich möchte den Code etwas umbauen.
Und zwar möchte ich nach Eingaben suchen wenn das Ausrufezeichen ("!") mehrmals (1 mal ist ok) hintereinander (ab 2 mal) eingegeben wurde.

Kann mir da jemand helfen?

Danke im Vorraus.
 
Meinst du so etwas?
PHP:
if(preg_match('/!!+/', $var1)) {
  $var1 = str_replace('!', '', $var1);
}

Ja genau das meine ich. :) Danke dafür.

Was muss ich dem am Code verändern damit jedes weitere Ausrufezeichen gelöscht wird?

PHP:
$var1 = 'B******MW5!!00!PS';

if(preg_match('/!!+/', $var1)) {
  $var1 = str_replace('!', '', $var1);
  echo 'Das !-Zeichen bitte nur einmal pro Buchstabe/Zahl verwenden';
}

Ausgabe: BMW500PS

Besser wäre: B!MW5!00!PS

Warum nicht direkt mit preg_replace()?
PHP:
$var1 =   preg_replace('/(!!+)/', '', $var1);

Funktioniert auch, jedoch ist mir eine IF-Abfragen wegen der weiteren Möglichkeiten lieber.

Danke. :)
 
Funktioniert auch, jedoch ist mir eine IF-Abfragen wegen der weiteren Möglichkeiten lieber.
Wenn du prüfen willst, ob der Nutzer überhaupt mehr als zwei mal an einer Stelle Ausrufezeichen benutzt hat, dann benutze doch den count-Parameter von [phpf]preg_replace[/phpf]:
PHP:
$count = 0;
preg_replace('/(!!+)/', '', $var1, -1, $count);

if ( $count > 0 )
{
  // ...
  echo 'Das !-Zeichen bitte nur einmal pro Buchstabe/Zahl verwenden'; 
}

@einfach nur crack

Dein Code löscht allerdings jedes Ausrufezeichen im String, wenn nur einmal x-fache Ausrufezeichen benutzt wurden.
 
Hallo ComFreek. :)

Dein Code löscht aber leider auch alle !-Zeichen wenn es mehr als eins ist.

Kannst du evtl. deinen Code anpassen das bis auf einen Ausrufezeichen alle gelöscht werden?

Beispiel:

C!om!Fr!!ee!!k -> C!om!Fr!ee!k (2 Ausrufezeichen entfernt)
 
Also dieser Abschnitt
PHP:
preg_replace('/(!!+)/', '', $var1, -1, $count);
sollte auch eher so
PHP:
preg_replace('/(!!+)/', '!', $var1, -1, $count);
aussehen, dann bleibt immer ein Ausrufezeichen stehen.

Gruß
 
Kann ich auch statt:
PHP:
preg_replace('/(!!+)/', '!', $var1, -1, $count);
einfach
PHP:
$var1 = preg_replace('/(!!+)/', '!', $var1, -1, $count);
verwenden?
 
Zurück