Thema: ereg_replace: Probleme mit Ersetzen...

Hallo!

Ich möchte mit der PHP-Funktion ereg_replace folgendes machen:
In einem Text (in einem String) soll alles, was in Anführungszeichen steht so geschrieben werden:
Statt der Anführungszeichen (z. B. bla bla bla "Text in Anführungszeichen" blubb blubb) sollen "deutsch" Anführungszeichen verwendet werden. Also beispielsweise bla bla bla ?Text in Anführungszeichen? blubb blubb.

Bitte schlagt nicht die Hände über dem Kopf zusammen, ich habe folgendes ausprobiert und wie ihr euch vermutlich denken könnt, funzt es nicht:
$textfeld = ereg_replace('"/./"', "?\1?", $textfeld);

Vielen Dank schon im Voraus!
Auch über einen Link zu einen guten reg_ex-Tutorial oder einem Buchtipp wär ich dankbar!

Mamphil

The laws of physics are the canvas God laid down on which to paint his masterpiece. “Leonardo Vetra” in Dan Brown’s “Angels & Demons”

2

Re: ereg_replace: Probleme mit Ersetzen...

Moin Mamphil,

im einfachsten Fall könntest Du es so machen:

 <?
 $textfeld =
 ""was" mögen das für 'bäume' sein,
  wo die "großen"
  Elephanten 'spazieren' gehn
  ohne sich zu 'stossen'";
 
 echo $textfeld;
 
 echo '<pre>';
 
 $textfeld = preg_replace(array('/(s|^)(?:'|")/', '/(?:'|")(s|$)/'), array('$1?', '?$1'), $textfeld);
 
 echo $textfeld;
 
 echo '</pre>';
 ?>
 

Ich hab' 147 mal durch 148 ersetzt, fand ich schöner.

Das Beispiel geht davon aus, daß jedem Wort in Anführungszeichen
ein Leerzeichen vorausgeht, und auch, daß eines folgt (oder aber Textbeginn,
bzw. Textende vorliegt), wobei beide Versionen - also doppelte und
einfache Anführungszeichen - ersetzt werden sollen.
Nun mag es aber zB. Fälle geben, in denen in einem Text meinetwegen
soetwas vorkommt:

Eines schönen"Morgens" blieb ich einfach'im'Bett liegen, uswusf....

In einem solchen Fall könnte man zB. zunächst die 'fehlenden' Leerzeichen
einfügen, und dann die Ersetzungen vornehmen.
Allerdings ist das Problem dabei, daß man immer von einer _geraden_ Anzahl
Anführungszeichen ausgehen müsste, also einem Paar von den Dingern, in die
eben jeweils ein Wort eingeschlossen ist.
Hat man aber damit zu rechnen, das sowohl ungrade Bildungen, als auch Fehler
im Satz vorkommen können, muß man noch andre Bedingungen finden, mit
denen sich der eine vom andern Fall abgrenzen läßt.
Es hängt halt immer von den zugrundeliegenden Dateien, mit denen man
arbeiten muß, ab.

gruß

matho 


P.S.

Zunächst einmal ist php nicht unbedingt die Sprache der Wahl, wenn
man mit regulären Ausdrücken arbeiten möchte. Es geht, aber es ist
doch eher mühselig.
Wenn Du Dich generell mit regexes beschäftigen möchtest, lies
möglichst das Buch von Friedl:

"Reguläre Ausdrücke, Jeffrey E.F. Friedl, O'Reilly, ISBN 3-930673-62-2"

Wahrscheinlich gibt's inzwischen eine neue Ausgabe davon, das weiß ich
grad nicht.

Sehr schön sind auch seine Beiträge in:

"Computer Science & Perl Programming, Edited by Jon Orwant, O'Reilly, ISBN 0-596-00310-2"

S. 89ff.

Vielleicht noch ein link:

http://www.lrz-muenchen.de/services/sch … gen/regul/

Re: ereg_replace: Probleme mit Ersetzen...

Danke!

Werde ich mal lesen und ausprobieren!

Mamphil

The laws of physics are the canvas God laid down on which to paint his masterpiece. “Leonardo Vetra” in Dan Brown’s “Angels & Demons”