Mailinglisten-Archive |
Hi, On Sat, Oct 29, 2005 at 08:27:43PM +0200, Peter Linzenkirchner wrote: > > ich habe folgenden String: > > beliebiger Text > [Liste] > zeile1 > zeile2 > zeile3 > [/Liste] > beliebiger Text > > Mein Ziel wäre, [Liste] durch <ul>, [/Liste] durch </ul>, die erste > Zeilenschaltung durch <li>, die letzte durch </li> und alle > dazwischen durch </li></li> zu ersetzen. Daran scheitere ich aber. Du willst also nach den Ersetzungen folgenden String haben: beliebiger Text <ul> <li>zeile1</li> <li>zeile2</li> <li>zeile3</li> </ul> beliebiger Text Korrekt? Das kannst du mit preg_replace_callback() machen, in dem du der Callback-Funktion die Zeilen der Items uebergibst und dann in der Funktion mit preg_replace() die <li> Tags einfuegst. <?php $text = <<<EOT beliebiger Text [Liste] zeile1 zeile2 zeile3 [/Liste] beliebiger Text EOT; // Bekommt in $treffer[1] den Teil des Textes mit den Item-Zeilen function list_callback($treffer) { // Jetzt in dem Teil der Item-Zeilen die <li> Tags pro Zeile // einfuegen $items = preg_replace('#^(.*)$#m', '<li>\\1</li>', $treffer[1]); // Noch die <ul> Tags drumrum und gut ist. return "<ul>\n" . $items . "\n</ul>"; } // Pattern um die Item-Zeilen zu finden $pattern = '#\[Liste\]\n(.*)\n\[\/Liste\]#isU'; $text_new = preg_replace_callback($pattern, 'list_callback', $text); echo $text_new; ?> Gruss Jens
php::bar PHP Wiki - Listenarchive