Hi!
Ich habe ein Problem mit der Funktion preg_replace_callback. Vielleicht weiß jemand von euch eine andere Funktion mit der ich das bewerkstelligen kann oder hat mit preg_replace_callback eine Lösung parat.
Ich will in einem String bestimmte Teile ersetzen. Dabei werden aber nicht alle die auf das Suchmuster passen ersetzt, sondern diese werden vorher noch überprüft, deswegen preg_replace_callback. Mal ein Beispiel:
Ich suche nach den Teilstrings in geschweiften Klammern, allerdings soll jetzt der in den h1 Tags nicht ersetzt werden.
Im Trefferarray im Callback habe ich jetzt zweimal {blub} und einmal {bla}. Bis jetzt ermittle ich mittels strpos() zu jedem Treffer die Position im String. Das Problem ist natürlich, dass ich, wenn ein Teilstring 2-mal auftaucht, immer die Position des ersten erhalte. Das ist natürlich nicht Sinn und Zweck. Ich habe allerdings keine wirkliche Lösungsidee.
Am einfachsten wäre es wenn ich im Callback zu jedem Treffer auch gleich die dazugehörige Position hätte, aber ich weiß nicht wie ich das machen kann.
Hat jemand von euch eine Idee?
Ich habe ein Problem mit der Funktion preg_replace_callback. Vielleicht weiß jemand von euch eine andere Funktion mit der ich das bewerkstelligen kann oder hat mit preg_replace_callback eine Lösung parat.
Ich will in einem String bestimmte Teile ersetzen. Dabei werden aber nicht alle die auf das Suchmuster passen ersetzt, sondern diese werden vorher noch überprüft, deswegen preg_replace_callback. Mal ein Beispiel:
HTML:
{blub}
<h1>{blub}</h1>
{bla}
Im Trefferarray im Callback habe ich jetzt zweimal {blub} und einmal {bla}. Bis jetzt ermittle ich mittels strpos() zu jedem Treffer die Position im String. Das Problem ist natürlich, dass ich, wenn ein Teilstring 2-mal auftaucht, immer die Position des ersten erhalte. Das ist natürlich nicht Sinn und Zweck. Ich habe allerdings keine wirkliche Lösungsidee.
Am einfachsten wäre es wenn ich im Callback zu jedem Treffer auch gleich die dazugehörige Position hätte, aber ich weiß nicht wie ich das machen kann.
Hat jemand von euch eine Idee?