Visualizzazione risultati 1 fino 2 di 2

Discussione: preg replace con variabili + SQL

  1. #1
    Guest

    Predefinito preg replace con variabili + SQL

    ciao!
    voglio usare una specie di bbcode per linkare gli articoli presenti nel mio database, scrivendo come titolo del testo il titolo dell'articolo:

    Codice PHP:
    $query=" SELECT Titolo FROM articoli Where Id=" . $1;
    $res = mysql_query($query) or die (mysql_error());
    $f=@mysql_fetch_array($res);
    $titolo = stripslashes($f['Titolo']);
    preg_replace("#\[articlo\]([0-9]+)\[/article\]#","<a href=\"articolo-$1.html\">" . $titolo . "</b>",$stringa);
    ovviamente la sintassi è sbagliata, perchè non si può usare $1 nella query, essendo questa una variabile di preg_replace.
    quale alternativa?
    Ultima modifica di alemoppo : 06-05-2012 alle ore 22.45.00 Motivo: [code] -> [php]: si capisce meglio :D

  2. #2
    Guest

    Predefinito Risolto

    Ho risolto usando preg_match, gli array e un ciclo foreach!
    Magari può essere utile per qualcuno!
    Oppure qualcuno può cercare di migliorare questo script (se ci sono margini), per me e per tutti gli altri utenti!

    Codice PHP:
    $artlinkati = array();
    preg_match("#\[linkarticolo\]([0-9]+)\[/linkarticolo\]#",$testo,$artlinkati);
    foreach (
    $artlinkati as $i => $idlink) {
    $idlink=preg_replace("#\[linkarticolo\]([0-9]+)\[/linkarticolo\]#","$1",$idlink);
    $query="SELECT Titolo FROM articoli Where Id=" . $idlink;
    $res = mysql_query($query) or die (mysql_error());
    $f=@mysql_fetch_array($res);
    $titololink = stripslashes($f['Titolo']);
    $testo=preg_replace("#\[linkarticolo\]([0-9]+)\[/linkarticolo\]#","<a href=\"/articoli/$1.html\" title=\"" . $titololink . "\">" . $titololink . "</a>",$testo);
    }
    echo
    $testo;

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •