[PHP] Functies en regexps

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JER00N
  • Registratie: Maart 2002
  • Niet online
Ik ben nu bezig met een forum waarin ook UBB gebruikt kan worden. Er is dus ook een [code]-tag die de code mooi in een tabelletje zet en regelnummering erbij zet (zoals hier op GoT). Daarvoor heb ik nu een funtie gemaakt:

PHP:
1
2
3
4
5
6
7
8
function MakeCode($ICode){
    $FArray = explode("\n", $ICode);
    echo "<table border='0' bgcolor='#FFFFFF' width='500'>";
    for($i = 1; $i <= count($FArray); $i++){
        echo "<tr><td width='20' bgcolor='#CCCCCC'>$i</td> <td>$FArray[$i]</td></tr>";
    }
    echo "</table>";
}


Deze functie haalt $ICode dus uit elkaar waar een "\n" staat en stopt die in een array die daarna via een for-loop onder elkaar worden gezet, met het regelnummer ($i) ervoor.

Nu heb ik een bestand genaamd parser.php waar alle ubb codes worden gereplaced naar html. Hierin staat dus ook de command om die [code] om te zetten:

PHP:
1
$TopicContent = preg_replace("#\\[code\](.*?)(\\[/code\])#si", MakeCode("\\1"), $TopicContent);


Maar ik zit hier dus met het probleem, namelijk die \\1.. dat herkent ie niet als een echte variabele. Ik krijg dus gewoon een lege tabel (met 1 regel) :'(
Ik heb al vanalles geprobeerd, bijv MakeCode(\\1), MakeCode('\\1') etc.. maar ik kom niet verder. Ik heb uiteraard ook al gezocht op php.net en op GoT en een beetje op PHPfreakz.nl maar daar kon ik ook niet echt goeie resultaten vinden.

Acties:
  • 0 Henk 'm!

Verwijderd

Succes

modbreak: als je dan niets hebt toe te voegen, zeg dan niets? :z

[ Voor 90% gewijzigd door curry684 op 25-08-2003 22:08 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 22:05

crisp

Devver

Pixelated

je moet sowieso de e-modifier gebruiken:

PHP:
1
$TopicContent = preg_replace('/\\[code\](.*?)\\[\/code\]/ise', 'MakeCode(\'$1\')', $TopicContent);


(of een call-back)

[ Voor 10% gewijzigd door crisp op 25-08-2003 22:33 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • JER00N
  • Registratie: Maart 2002
  • Niet online
crisp schreef op 25 augustus 2003 @ 22:11:
je moet sowieso de e-modifier gebruiken:

PHP:
1
$TopicContent = preg_replace('/\\[code\](.*?)(\\[/code\])/ise", 'MakeCode(\'$1\')', $TopicContent);


(of een call-back)
Hm maar hierbij krijg ik een parse error...

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Pastasaus: je mag wel even zelf naar die regel kijken waarom er een parse error in zit hoor... :/

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 22:05

crisp

Devver

Pixelated

curry684 schreef op 25 August 2003 @ 22:19:
Pastasaus: je mag wel even zelf naar die regel kijken waarom er een parse error in zit hoor... :/
al fixed :)
ik heb nu eenmaal een voorliefde voor enkele quotes als de inhoud toch niet geparsed hoeft te worden ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • JER00N
  • Registratie: Maart 2002
  • Niet online
curry684 schreef op 25 August 2003 @ 22:19:
Pastasaus: je mag wel even zelf naar die regel kijken waarom er een parse error in zit hoor... :/
Heb ik ook gedaan maar haalt niks uit :)

Als ik de eerste ' vervang door een " krijg ik
Warning: Unknown modifier 'c' in C:\apache\htdocs\nnf\parser.php on line 73
Nu denkt ie dat die c van code een modifier is ofzo :? 8)7
Misschien komt het omdat ik PHP 4.0.5 heb draaien?

edit: ook na de fix van crisp krijg ik bovenstaande error. ;(

[ Voor 9% gewijzigd door JER00N op 25-08-2003 22:25 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 22:05

crisp

Devver

Pixelated

Pastasaus schreef op 25 augustus 2003 @ 22:24:
[...]


Heb ik ook gedaan maar haalt niks uit :)

Als ik de eerste ' vervang door een " krijg ik

[...]


Nu denkt ie dat die c van code een modifier is ofzo :? 8)7
Misschien komt het omdat ik PHP 4.0.5 heb draaien?

edit: ook na de fix van crisp krijg ik bovenstaande error. ;(
komt omdat ik zelf forward slashes gebruik als delimeter, en vergeten was de forward slash in /code te escapen; zie final edit ;)

offtopic:
4.0.5 is wel antiek hoor....

[ Voor 4% gewijzigd door crisp op 25-08-2003 22:34 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • JER00N
  • Registratie: Maart 2002
  • Niet online
crisp schreef op 25 August 2003 @ 22:34:
[...]

komt omdat ik zelf forward slashes gebruik als delimeter, en vergeten was de forward slash in /code te escapen; zie final edit ;)

offtopic:
4.0.5 is wel antiek hoor....
Jaaaaa eindelijk! Het werkt :D

Thanks _O_ :)

Hm ik zal PHP idd eens updaten.. zie dat ie uit half 2001 stamt :\ :P
Pagina: 1