[PHP] Mbv regex'en een variabele een waarde toekennen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey,
Ik ben bezig met een nieuwssysteem, waarbij ik ook embedded plaatjes wil gaan supporten. Dit heb ik al wel werkend maar met een grote omweg. Om dit wat soepeler te laten verlopen zou ik graag het volgende willen:
[img pid=100 align=right]
Een variabele binnen PHP moet dan de waarde 100 krijgen waarna het script de locatie van het plaatje met pid 100 uit een dbase kan trekken en vervolgens het geheel kan vervangen door de <a>'s en <img>'s.
Ik neem aan dat dit mogelijk is met PHP alleen heb ik tot dusver niets kunnen vinden hoe.
Bvd, :)

[ Voor 4% gewijzigd door Verwijderd op 25-12-2002 16:12 ]


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
PHP:
1
2
3
4
5
6
7
8
$woordperwoord = explode(" ", $var);
$pid1 = explode("=", $woordperwoord[1]);
$pid = $pid1[1];
$query = mysql_query("SELECT * FROM images WHERE pid='$pid'");
$image = mysql_fetch_array($query);
$align1 = explode("=", $woordperwoord[2]);
$align = $align1[1];
$html = "[img]\"$image[image_url]\"[/img]";


Niet getest, maar op die manier moet het mogelijk zijn denk ik.

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit had ik ook in gedachten, alleen zit ik als ik het zo aanpak met het probleem hoe ik $var uit een hele lap tekst krijg.
edit:
Dit had ik er eventjes bij moeten vermelden, excuses :).

[ Voor 27% gewijzigd door Verwijderd op 25-12-2002 17:00 ]


Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 18-09 21:53

Tux

PHP:
1
2
3
4
5
6
7
8
9
<?php
function getPid($pid, $align)
{
   $query = mysql_query ("SELECT * FROM images WHERE pid='" . $pid . "'");
   $image = mysql_fetch_array ($query);
   return "[img]\""[/img]\n";
}

$spef = preg_replace("#\[img pid=(.*?) align=(.*?)\]#si", getPid(\\1, \\2), $spef);


getPid(1, 2) moet getPid(\\1, \\2) zijn!

zoiets :?

[edit]
Damn ik kan getPid(\\1, \\2) niet doen (2x backslash voor getal)

[ Voor 67% gewijzigd door Tux op 25-12-2002 17:03 ]

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Daar liep ik dus ook vast met het oplossen van dit probleem, de waarden die ik nodig heb, heb je als \\1 etc. maar om die nou in een variabele te krijgen..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Toch nog eventjes een kleine kick omdat ik zeer benieuwd ben hoe dit mogelijk is.. :)

Acties:
  • 0 Henk 'm!

Verwijderd

>> Tux zat er volgens mij dichtbij, maar probeer dit eens:

PHP:
1
2
3
4
5
6
7
8
9
<?php
function getPid($pid, $align)
{
   $query = mysql_query ("SELECT * FROM images WHERE pid='" . $pid . "'");
   $image = mysql_fetch_array ($query);
   return "[img]\""[/img]\n";
}

$spef = preg_replace("#\[img pid=(.*?) align=(.*?)\]#sie", getPid('\\1', '\\2'), $spef);


Veranderingen zitten in de laatste regel; Die e modifier zorgt ervoor dat je replacestring als een php-statement wordt beschouwd, dus als je functie getPid bestaat, gaat ie die 2 variabelen (\\1 en \\2) meegeven als strings aan die functie ;)

[ Voor 14% gewijzigd door Verwijderd op 29-12-2002 17:42 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hartelijk dank, kan ik weer verder met mijn systeempje :)

Acties:
  • 0 Henk 'm!

Verwijderd

Was trouwens wat te snel blijkbaar, want het moet uiteraard:

PHP:
1
$spef = preg_replace("#\[img pid=(.*?) align=(.*?)\]#sie", "getPid('\\1', '\\2')", $spef);


zijn ... je moet het eerst als string meegeven uiteraard :X
Pagina: 1