logikproblem mit schleife...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • logikproblem mit schleife...

    hallo,
    erstmal sorry für die beschissene überschrift aber mir ist keine bessere eingefallen.
    also ich entwickel gerade ein tool, dass aus deinem string bestimmte muster erkennt und diese umwandelt.
    ist aus den foren ja bekannt, in meinem bsp z.b., dass er [ url ]http://www.test.de[ / url ] (ohne leerzeichen) in einen html link umwandelt.
    gelingt mir dank preg_match() und preg_replace() auch alles soweit.
    meine suchmuster speicher in arrays ab.
    hier mal der code um einen überblick zu bekommen:

    title.php:
    PHP-Code:
    <html>
    url ]hallo[ / url //ohne leerzeichen
    </html
    test.php:
    PHP-Code:
    $sis file_get_contents("title.php","rb");

    $re_suche = array('!\[url\](.*?)\[/url\]!','!\[url=(.*?)\](.*?)\[/url\]!');

    preg_match($re_suche[0],$sis,$matches);

    $re_ersetze = array('<a class="red" href="'.$matches[1].'" target="_blank">'.$matches[1].'</a>','<a class="red" href="'.$matches[1].'" target="_blank">'.$matches[2].'</a>');

    $text = @preg_replace($re_suche,$re_ersetze,$sis);
    echo 
    $text
    durch
    PHP-Code:
    preg_match($re_suche[0],$sis,$matches); 
    wird jetzt noch nur der erste eintrag im arry genommen.
    ich bräuchte jetzt jedoch eine schleife du prüft, ob das suchmustter in den array zutrifft oder nicht. ich weiß, dass preg_match() eine 1 zurückgibt wenn es übereinstimmt, andernfalls eine 0.
    ich habs schon mit enttlichen for() und while() schleifen versucht, aber stehe gerad einfach auf dem schlauch und bekomme das nicht gebacken.
    sicherlich ne ganz einfache sache, für hilfe bin ich dankbar

    gruß
    wolle

    edit: die regulären ausdrücke werden hier irgendwie nicht angezeigt. sind aber vorhanden und das script funktioniert auch soweit. nur an der schleife hängts
    Zuletzt geändert von wolle85; 11.12.2005, 22:51.

  • #2
    1. ist Dein Code zu breit, bitte umbrechen
    2. Versuchs mal mit preg_match_all()
    oder mit
    PHP-Code:
    while (preg_match($re_suche[0],$sis,$matches))
    {
         
    $re_ersetze = array('<a class="red" href="'.$matches[1].'"
         target="_blank">'
    .$matches[1].'</a>','<a class="red"
         href="'
    .$matches[1].'" target="_blank">'.$matches[2].'</a>');
         
    $sis = @preg_replace($re_suche,$re_ersetze,$sis);

    Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

    Kommentar

    Lädt...
    X