Seite 1 von 1

Bestimmte Zeichenfolge verhindern

Verfasst: 13.06.2011, 10:38
von osgee
Hallo,

Habe eine Frage und da ich in PHP noch nicht so sehr geübt bin, hoffe ich, dass ihr mir helfen könnt.

Und zwar möchte ich Strings bearbeiten und Zeichen ersetzen (soweit ist das nicht das Problem). Allerdings möchte ich mit einer globalen Funktion die Strings so bearbeiten, dass in jedem String nie ein Bindestrich auf einen anderen Bindestrich folgen darf .. dabei kann man allerdings nicht sagen, wieviele Bindestriche hintereinander auftreten können, deshalb sollte das ganze global gemacht werden ...

Ein Beispiel:
String 1: "hallo--wie gehts" sollte zu "hallo-wie gehts" werden
String 2: "hallo-----wiegehts--gut-" sollte zu "hallo-wiegehts-gut-" werden

usw.

wie kann ich das am besten realisieren?

vielen dank schonmal!

Verfasst:
von

Verfasst: 13.06.2011, 10:50
von Wirths Media
$string = preg_replace("/-+/", '', $string);

Sollte funktionieren.

Gruß
Daniel

Verfasst: 13.06.2011, 10:55
von Synonym
Das ist ein Thema, das man bei vielen Bereichen nutzt, mit vielen Zeichen und Konstellationen. So etwas habe ich auch, aber da es eben über viele Wege geht und sich nicht alles kombinieren lässt, habe ich einiges einfach separat. Hier mal das mit dem "---".

Code: Alles auswählen

$value = preg_replace('/-+/', '-', $value);
Mist, zu langsam...

@calusa
Bei Dir werden dann aber alle '---' ersetzt, da bleibt dann keines mehr übrig, oder ist meine nun falsch?

Verfasst: 13.06.2011, 10:58
von LinkPop
while (stristr($string,"--")) {$string = str_replace("--","-",$string);}

Verfasst: 13.06.2011, 11:05
von Wirths Media
Habe es eben noch einmal gestest...

So ist es richtig:

Code: Alles auswählen

$string = preg_replace("/-+/", '-', $string);

Gruß
Daniel

Verfasst: 13.06.2011, 12:01
von osgee
calusa-xx hat geschrieben:Habe es eben noch einmal gestest...

So ist es richtig:

Code: Alles auswählen

$string = preg_replace("/-+/", '-', $string);

Gruß
Daniel
Ja, scheint wunderbar zu funktionieren. Danke :)

Verfasst: 19.06.2011, 10:26
von UweKeim
Normalerweise mache ich so was durch Textersetzung.

Code: Alles auswählen

$string = str_replace("--","-",$string);
$string = str_replace("--","-",$string);
Insgesamt 2 mal aufrufen, damit alles ersetzt wird. Sollte normalerweise immer schneller als ein Regulärer Ausdruck sein.

Verfasst: 19.06.2011, 10:31
von Synonym
Hm.... Und was wird dann aus:

"hallo---------wiegehts--gut-"

Mal sehen.

Erster Durchlauf...

Müsste "hallo-----wiegehts-gut-" werden

Zweiter Durchlauf

Müsste "hallo---wiegehts-gut-" werden...

Und dann?

Verfasst: 19.06.2011, 10:45
von devolo01
In diesem Speziellen Fall ist preg_replace(), wirklich die einzig anzuwenden Funktion wenn du selber keine eigene Funktion schreiben möchtest.

https://de.php.net/manual/de/function.preg-replace.php

alles andere wäre auch quatsch.