Die Frage ist doch einfach, ob es *möglich* ist, dieses Ergebnis in einem Array als Schüssel zu verwenden.
Mir ist nicht vollends klar was Du meinst; genaugenommen würde ich anhand Deiner Aussage vermuten, Du seist nicht in der Lage $a[str_replace("No1",$No[1],$c)] zu tippen...
ist das denn wirklich so schwer zu verstehen? Ich möchte in einem String nach bestimmten Werten suchen, und wenn diese Gefunden werden, den String durch einen anderen erstetzen, der anhand dieser Werte bestimmt wird.
$c = preg_replace("/^.* (TL|TDL)(:| |)([a-zA-Z]{3,5})-?(\d{1,4}).* (PL|IPL)(:| |)([a-zA-Z]{3,5})-?(\d{1,4}) /e",sprintf($repl[strtolower(\1)][strtolower(\3)],\2,\4),$c);
Eine von mir übernommene Datenbank soll auf diese Art verständliche Ausgaben produzieren. Die Frage ist eben, wie ich es schaffe, mit den Ergebnissen \1 und \3 auf die entsprechenden Array-Schlüssel zuzugreifen und \2 und \4 für sprintf() zu verwenden. Ich dachte, daß ginge über den /e Modifikator, aber ich weiß nicht wie.
Der Ausdruck ist immer noch etwas vereinfacht, da er erst ca 95% der Möglichkeiten abdeckt. Interessant wäre auch, wie man den Ausdruck so schreiben kann, daß er Teile in beliebieger Reihenfolge findet.
Also einfach gesagt: Er soll "ab" und "ba" finden, aber nicht "aa" oder "bb". Ich weiß natürlich daß ich hier (ab|ba) schreiben könnte, aber wenn ich a und b durch komplexe Ausdrücke ersetze, dann wird das sehr sehr komplex. Wenn ich aber (a|b){2} schreibe, dann findet er eben auch "aa". Vielleicht weiß du da ja auch irgendeinen ganz einfach Trick...
Grüße
Heizer