Mit <bs> im String voriges Char löschen?

l0c4lh05t

Erfahrenes Mitglied
Hi,
frohes Neues erstmal!
Also ich finde und finde keinen richtigen Ansatz. Wenn mein String beispielsweise so aussieht: "abe <bs> d <bs> c", wie kann ich dann daraus ein "abc" machen, ich habe mit str_replace(), preg_replace() und mit substr_replace() herumgespielt, aber ohne richtiges ergebnis, zwar habe ich es geschafft, das erste " <bs> " zu ersetzen, aber beim Zweiten ging dann gar nichts mehr. :(
Danke schonmal, für jede hilfreiche Antwort!
 
Das Einfachste wäre wohl mit einem regulären Ausdruck:
PHP:
preg_replace('/.<bs>/s', '', $string)
 
Dieser reguläre Ausdruck berücksichtigt zusätzlich noch die umgebenen Leerzeichen:
Code:
.\s*<bs>\s*
 
Ich habe nun doch ein kleinen Fehler gefunden, den ich alleine nicht beheben kann:

Bei "Test[SPACE][SPACE]<bs>[SPACE]" sollte sich das "[SPACE]<bs>[SPACE]" nur auf das "[SPACE]" beziehen, das ist aber nicht so, es löscht trotzdem das "t" von "Test" und danach kommt dann irgendwie gar nichts mehr. ([SPACE] sollen Leerräume darstellen)

Tut mir ja leid, dass ich euch hier mit solchen Lappalien nerve, aber ich verstehe das Manual im Punkt preg_replace noch nicht... :(
 
Wenn ich das folgende Script ausführe,
PHP:
<?php
   $eins = "Test[SPACE][SPACE]<bs>[SPACE]" ;
   $zwei = preg_replace('/.\s*<bs>\s*/', '', $eins);
   echo $zwei;
?>
bekomme ich

HTML:
Test[SPACE][SPACE[SPACE]
als Ergebnis.
 
Wenn ich das folgende Script ausführe,
PHP:
<?php
   $eins = "Test[SPACE][SPACE]<bs>[SPACE]" ;
   $zwei = preg_replace('/.\s*<bs>\s*/', '', $eins);
   echo $zwei;
?>
bekomme ich

HTML:
Test[SPACE][SPACE[SPACE]
als Ergebnis.

Lies was ich geschrieben habe und du wirst erkennen, dass du etwas falsch verstanden hast. Überall wo ich [SPACE] geschrieben habe kommen Leerzeichen hin, ich habe [SPACE] geschrieben weil man den Unterschied zwischen einem und zwei Leerräumen ("Spaces") schlechter erkennen kann als "[SPACE][SPACE]". Deswegen:

PHP:
<?php
   $eins = "Test  <bs> " ;
   $zwei = preg_replace('/.\s*<bs>\s*/', '', $eins);
   echo $zwei;
?>

Wie geschrieben, das " <bs> " soll sich durchaus auch auf die Leerräume ("Spaces") zwischen dem " <bs> " und dem was davor steht beziehen. Das kriege ich nach wie vor nicht hin!
 
Zurück