Avatar billede mysli Nybegynder
19. juli 2005 - 18:21 Der er 5 kommentarer og
1 løsning

Min while går i spåner med strstr

Jeg har en template med nogle <!---@EwMenu<navn>---> tags.

Jeg skal fra den template bruge "navnet" på menuen tagget og bruge det som argument i en funktion. Til det har jeg lavet følgende while loop:

$key = $html;
            while($key = strstr($key, "<!---@EwMenu")){
                $menu = explode($key, "-");
                $navi = $navigation->createNavigation($id, $menu[0]);
                $html = str_replace("<!---@EwMenu".$menu[0]."--->", $navi, $html);
            }

$html er hele templatefilen.

Det jeg egentlig, efter min opfattelse mener der burde ske er;

strstr funktionen burde finde det første sted <!---@EwMenu optræder.

$key burde så indeholde alt efter første fremkost af <!---@EwMenu.

Derefter bliver $key exploderet ved første -, så $menu[0] burde indeholdet "navnet", så kaldes funktionen jeg har lavet, hvor menu[0].

$key indeholdet stadig alt efter første fremkost af <!---@EwMenu, og bliver igen kørt i while. Er der flere fremkomster af <!---@EwMenu kører den det hele igen, ellers går den vider i min script.

Men hvorfor bliver den ved med at køre loopet?
Avatar billede barklund Nybegynder
19. juli 2005 - 18:27 #1
Hm, det er nok lettere med lidt preg_replace som:

$html = preg_replace("/<!---@EwMenu(.*?)--->/e", '$navigation->createNavigation($id, \\1)', $html);

Vil jeg tro, du kan bruge :)

--
Morten Barklund
Avatar billede bojo Nybegynder
19. juli 2005 - 19:25 #2
måske er dette bedre

while( ($key = strstr($key, "<!---@EwMenu")) != FALSE ){
Avatar billede mysli Nybegynder
20. juli 2005 - 00:50 #3
Den havde jeg ikke lige fået overvejet. Mange tak og et svar
Avatar billede bojo Nybegynder
20. juli 2005 - 08:54 #4
Hvis det var mig, så nej tak, svar selv og husk at acceptere svaret ;-)
Avatar billede barklund Nybegynder
20. juli 2005 - 11:01 #5
Jeg kaster gerne et svar, om du brugte den noget mere oplagte preg_replace :)
Avatar billede barklund Nybegynder
20. juli 2005 - 19:39 #6
Tark for points :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester