hallo,
hab mir ein script geschrieben, was bestimmte suchmuster in einem string umwandeln soll. als bsp: [ url ]www.test.de[ /url ] (ohne leerzeichen)in einen richtigen html link umwandeln. geht auch sehr gut.
das problem ist ejtzt aber, dass es nicht mehr korrekt angezeigt wird, sobald er mehrere suchmuster in einem string findet.
hier erstmal der code:
so angenommen in $cont würde "[ b ]fett[ /b ][ em ]kursiv[/ em ]" (ohne leerzeichen) stehen, gibt er mir folgendes aus:
er nimmt sich also den eil zwischen den tags des ersten ergebnisses.
ich such jetzt schon den halben tag nach dem fehler, komme aber keinen meter weiter weil mir mein script total logisch erscheint und ich mir net vorstellen kann, wo der fehler liegt.
gruß
wolle
hab mir ein script geschrieben, was bestimmte suchmuster in einem string umwandeln soll. als bsp: [ url ]www.test.de[ /url ] (ohne leerzeichen)in einen richtigen html link umwandeln. geht auch sehr gut.
das problem ist ejtzt aber, dass es nicht mehr korrekt angezeigt wird, sobald er mehrere suchmuster in einem string findet.
hier erstmal der code:
PHP-Code:
<?
// $cont = eingangsstring
$text=0;
$suche = array('!\[url\](.*?)\[/url\]!i',
'!\[url=(.*?)\](.*?)\[/url\]!i',
'!\[b \](.*?)\[/b\]!i',
'!\[em \](.*?)\[/em\]!i', //ohne leerzeichen
'!\[u \](.*?)\[/u\]!i',
'!\[strike \](.*?)\[/strike\]!i',
'!\[email \](.*?)\[/email\]!i',
'!\[email = (.*?)\](.*?)\[/email\]!i');
for($s=0; ;$s++) { // finde arrayende von $suche
if(!$suche[$s]) {
break;
}
}
for($i=0;$i<=$s;$i++) { // so lange, wie $i nicht größer als das arrayende von $suche
$match = @preg_match($suche[$i],$cont,$matches);
if($match) {
$ersetze = array('<b><a class="red" href="'.$matches[1].'" target="_blank">'.$matches[1].'</a></b>',
'<b><a class="red" href="'.$matches[2].'" target="_blank">'.$matches[1].'</a></b>',
'<b>'.$matches[1].'</b>',
'<em>'.$matches[1].'</em>',
'<u>'.$matches[1].'</u>',
'<strike>'.$matches[1].'</strike>',
'<b><a class="red" href="mailto:'.$matches[1].'">'.$matches[1].'</a></b>',
'<b><a class="red" href="mailto:'.$matches[2].'">'.$matches[1].'</a></b>');
$text = @preg_replace($suche,$ersetze,$cont);
}
}
if(!$text) {
$text = $cont;
}
// $text = ausgabestring
?>
Code:
[b]fett[/b][I]fett[/I]
ich such jetzt schon den halben tag nach dem fehler, komme aber keinen meter weiter weil mir mein script total logisch erscheint und ich mir net vorstellen kann, wo der fehler liegt.
gruß
wolle
Kommentar