[PHP] Weet niet welke functie ik nodig heb

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo Tweakers,

Ik zoek een bepaalde functie waarmee ik het volgende voor elkaar krijg. Ik heb op dit forum (en andere forums) gezocht maar kon geen goed antwoord vinden.
Bekijk de volgende code:

PHP:
1
$text = preg_replace("/\\[rechtsuitlijnen\](.*?)\\[\/rechtsuitlijnen\]/si", "\\1", $text);


Die code kijkt of "[rechtsuitlijnen] vanalles [/rechtsuitlijnen]" voorkomt in de variabele $text. Datgene wat "vanalles" is word geparsed door de (.*?) en komt in de 1 terecht en word vervangen in $text.

Nu wil ik die waarde die in 1 terecht komt opvangen in een variabele zodat ik die als argument naar een functie kan sturen. Heeft iemand enig idee hoe ik dat kan doen? :? Mijn dank is groot!

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

/e modifier (manual werk):
PHP:
1
$text = preg_replace("/\\[rechtsuitlijnen\](.*?)\\[\/rechtsuitlijnen\]/sie", "eenfunctie('$1')", $text);

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
$text = preg_replace("/viewtopic.php?topic=(.*?)&forum=[0-9]{2}/sie","parseForumLink('$1')", $text);


Werkt niet... er word geen argument verstuurd naar m'n functie parseForumLink.
:'(

[ Voor 13% gewijzigd door Verwijderd op 12-02-2003 14:37 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 12 February 2003 @ 14:37:
PHP:
1
$text = preg_replace("/viewtopic.php?topic=(.*?)&forum=[0-9]{2}/sie","parseForumLink('$1')", $text);


Werkt niet... er word geen argument verstuurd naar m'n functie parseForumLink.
:'(
Omdat je geen matches hebt :)
de ? is bijvoorbeeld een meta-character, als je een match op ? wilt hebben moet je 'm escapen; dit werkt mogelijk beter:
PHP:
1
$text = preg_replace("/viewtopic.php\?topic=(.*?)&forum=[0-9]{2}/sie","parseForumLink('$1')", $text);

anders ff dit gaan lezen :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Stom stom, bedankt crisp. Ik wist dat je ?'s moet escapen maar heb het over het hoofd gezien :). Toch werkt het nog steeds niet.

Ik zal julie mijn simpele testcode even laten zien:

PHP:
1
2
3
4
5
6
7
8
9
10
11
$text="de volgende url wil ik parsen http://www.pocketpc-club.nl/forum/viewtopic.php?topic=7988&forum=9 en hier gaat de tekst verder";
$text = preg_replace("/viewtopic.php\?topic=(.*?)&forum=[0-9]{2}/sie",parseForumLink(1), $text);
print $text;

function parseForumLink($thread) {
                global $dbase;
    $Query="SELECT new_threadid FROM vb_newold_threadid WHERE old_threadid=$thread";
    $result=$dbase->querySelect($Query);
    $row=mysql_fetch_row($result);  
    return "showthread.php?threadid=$row[0]";
}

[ Voor 20% gewijzigd door Verwijderd op 12-02-2003 14:52 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ik neem aan dat je de hele string:
code:
1
viewtopic.php?topic=7988&forum=9

wilt vervangen door:
code:
1
showthread.php?threadid=xxx


Je regexp moet er dan ongeveer zo uit komen te zien:

PHP:
1
$text = preg_replace("/viewtopic.php\?topic=(.+)&forum=[0-9]{1,2}/ise","parseForumLink('$1')", $text);

[ Voor 8% gewijzigd door crisp op 12-02-2003 15:35 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanks crisp maar ik had hem al voor mekaar:

PHP:
1
$text = preg_replace("/viewtopic.php\?topic=([0-9]{0,4})&forum=([0-9]{0,3})/e","parseForumLink('\\1')", $text);


Die werkt goed voor mij. Bedankt voor de hulp en voor het op weg helpen ;)

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

Verwijderd schreef op 12 februari 2003 @ 15:31:
Thanks crisp maar ik had hem al voor mekaar:

PHP:
1
$text = preg_replace("/viewtopic.php\?topic=([0-9]{0,4})&forum=([0-9]{0,3})/e","parseForumLink('\\1')", $text);


Die werkt goed voor mij. Bedankt voor de hulp en voor het op weg helpen ;)


PHP:
1
$text = preg_replace("/viewtopic.php\?topic=([0-9]{1,4})&forum=([0-9]{1,3})/e","parseForumLink('\\1')", $text);

lijkt me iets zinniger?
of

PHP:
1
$text = preg_replace("/viewtopic.php\?topic=([0-9]+)&forum=([0-9]+)/e","parseForumLink('\\1')", $text);

Klaar voor een nieuwe uitdaging.

Pagina: 1