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/