[PHP] Query adhv replace

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MaNdM
  • Registratie: April 2001
  • Laatst online: 07:09

MaNdM

1000-dingen-doekje

Topicstarter
Na lang zoeken ben ik er nog niet helemaal achter wat er misgaat in mijn stukje code.

Wat moet er eigenlijk gebeuren:
Ik wil gebruik maken van een tag zoals [image=2] waarbij het getal identificerend is voor de afbeelding die op die plaats moet komen te staan. Dus eigenlijk wil ik het getal in een string hebben om daarmee een query uit te kunnen voeren en dat dan ook nog eens tijdens de erego_replace. Ik neem aan dat het mogelijk is.

Nu heb ik:
Ik heb een stukje code gemaakt wat lijkt op wat ik nu heb alleen het geeft niet het gewenste resultaat. Als ik de $sql laat zien dan blijkt dat het getal waarnaar gezocht wordt niet klopt, dat is namelijk "\1" en niet bijvoorbeeld een 2. Het vreemde is dat als ik de $string door een return laat zien dat het ineens wél gewoon de gewenste 2 is. Wat doe ik hier fout of zie ik over het hoofd?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Plaatje($string)
{
    $sql="SELECT DISTINCT img_filename from tblimage WHERE img_id = '$string'";
    $result= mysql_query("$sql")or die("Connect Error: ".mysql_error());
    while ($row = mysql_fetch_array($result)) 
        {
        $file = $row['img_filename'];
        }
    mysql_free_result($result);
    $result = "[img]\"../images/markup/".$file."\"[/img]";
    return $result;
}

$text = "Blaat [image=1] Ja blah [image=4] blah.";

$result = eregi_replace("\\[image=([^\\[]*)\]", Plaatje('\\1'), $text);


Mijn excuses als het wat warrig overkomt, ik kan het niet echt beter uitleggen.

[ Voor 7% gewijzigd door MaNdM op 27-12-2004 15:26 ]

To be determined...


Acties:
  • 0 Henk 'm!

Verwijderd

Gebruik preg_replace met de e modifier :)

Acties:
  • 0 Henk 'm!

  • MaNdM
  • Registratie: April 2001
  • Laatst online: 07:09

MaNdM

1000-dingen-doekje

Topicstarter
Dan blijf ik het probleem houden dat in de string dus "\\1" staat en dat ik daar geen query meer kan draaien. Bovendien weet ik niet goed welk patroon ik hier dan voor moet gebruiken. Kan je wat meer toelichting geven?

To be determined...


Acties:
  • 0 Henk 'm!

Verwijderd

iets in deze trend:

PHP:
1
$string = preg_replace("/\[img=(.*?)\]/e", "''.Plaatje('\\1').''", $string);

Acties:
  • 0 Henk 'm!

  • MaNdM
  • Registratie: April 2001
  • Laatst online: 07:09

MaNdM

1000-dingen-doekje

Topicstarter
Verwijderd schreef op maandag 27 december 2004 @ 15:28:
iets in deze trend:

PHP:
1
$string = preg_replace("/\[img=(.*?)\]/e", "''.Plaatje('\\1').''", $string);
Bingo!

Heb em nu werkende alleen nu snap ik dus eigenlijk nog steeds niet waarom het nu wél werkt. Kan iemand mij dit uitleggen?

To be determined...


Acties:
  • 0 Henk 'm!

Verwijderd

Er staat in de manual eigenlijk een voorbeeld dat hier enorm op lijkt. Welke functie er aangeroepen moet worden maakt natuurlijk niet zoveel uit. In feite werkt het precies hetzelfde als een normale replace, alleen wordt er als je de e modifier overheen haalt eerst de "vervangende string" geëvalueerd alsof het PHP code is.

Acties:
  • 0 Henk 'm!

  • MaNdM
  • Registratie: April 2001
  • Laatst online: 07:09

MaNdM

1000-dingen-doekje

Topicstarter
Verwijderd schreef op maandag 27 december 2004 @ 16:01:
Er staat in de manual eigenlijk een voorbeeld dat hier enorm op lijkt. Welke functie er aangeroepen moet worden maakt natuurlijk niet zoveel uit. In feite werkt het precies hetzelfde als een normale replace, alleen wordt er als je de e modifier overheen haalt eerst de "vervangende string" geëvalueerd alsof het PHP code is.
Dat klopt, maar het grote verschil is wel dat het voorbeeld uit de manual voor mij erg onduidelijk is. Daar staan namelijk achter elkaar: /(<\?)(\w+) enzovoorts. Dat zijn dus dingen waar ik helemaal niets mee kan. Jouw voorbeeld daarentegen was veel duidelijker.

To be determined...

Pagina: 1