Hallo Heizer,
Ok, los geht's. Ich zitiere mal mein erstes Posting zum besseren Verstaendnis.
Der Benutzer hat 12 Moeglichkeiten, Mehrfachauszeichnungen anzugeben, naemlich:
6 dreifache:
_/*, _*/, */_ , *_/, /*_ , /_*,
und 6 doppelte:
/*, */, /_ , _/, *_, _*,
Du setzt eine Prioritaet in der Reihenfolge zB. _*/, dann entfallen aus den dreifachen
_*/ und aus den doppelten _/, */ und _*
Du definierst eine Standardreihenfolge fuer diese Mehrfachauszeichnungen, sagen wir erst unterstrichen, dann fett, dann kursiv. Die Zeichfolgen _*/, _/ und _* entsprechen diesem Kriterium, muessen also nicht weiter beruecksichtigt werden. Alle anderen Kombinationen wandelst du mit Hilfe eines regulaeren Ausdrucks in den Standard um.
Beispiel:
_/*WORT_/* => beide Auszeichnungen entsprechen dem Standard
_*/WORT_/* => der erste Teil hat die falsche Reihenfolge, der zweite ist ok.
_*/WORT_*/ => beide Auszeichnungen haben die falsche Reihenfolge
usw, das klappt natuerlich auch mit doppelten Auszeichnungen.
Jetzt brauchst Du eine Funktion, die alle falschen Reihenfolgen durch richtige ersetzt. Die muesste so aussehen:
function in_standard_umwandeln($originaltext)
{
//ersetze im gesamten Text alle Vorkommen von */_ oder *_/ oder /*_ (usw.) durch _*/
$neuertext = preg_replace("/\/_|\_/|/\*_/", '_*/, $originaltext);
//ersetze im gesamten Text alle Vorkommen von /_ durch _/
$neuertext = str_replace('*_', '_/', $neuertext);
//ersetze im gesamten Text alle Vorkommen von *_ durch _/
//...da fehlen noch ein paar Moeglichkeiten
return $neuertext;
}
Jetzt hast Du alle Auszeichnungen in der richtigen Reihenfolge und damit kannst Du ja umgehen.
Ich hoffe, das ist jetzt etwas klarer, wenn nicht, frag ruhig noch mal nach.
Gruß,
Dieter