Avatar billede rix Novice
06. februar 2011 - 19:30 Der er 17 kommentarer og
1 løsning

hjælp til Regulære udtryk

hej jeg er ved at øve mig på at lave en system som henter en side med html ting som ser sådan her ud

<html>
<head>
<title>{title}</title>
</head>
<body>
<br />
<br />
<!--boks_start_id_1-->
<table width="50%">
<tr>
<th>{hej}</th>
<td>{hej1}</td>
</tr>
</table>
<!--boks_end_id_1-->
</body>
</html>


nu ville jeg gerne hive det der er i mellem
<!--boks_start_id_1--> og <!--boks_end_id_1-->
ud for det der er mellem dem to skal vises flere gange
men kan ikke få denne kode til at virke


preg_match("/<!--boks_start_id_1-->([^<]*)<!--boks_end_id_1-->/i", $side, $regs);

har fundet ud af at det er fordi der er html koder med i for uden dem virker det som det skal
hvad skal jeg ændre for at det acceptere at der er html med
Avatar billede pmnielsen Novice
06. februar 2011 - 19:54 #1
Ved ikke helt om jeg forstår spørgsmålet?

Hvis du skal have skrevet
  <table width="50%">
  <tr>
  <th>{hej}</th>
  <td>{hej1}</td>
  </tr>
  </table>
flere gange vil jeg bruge en for()løkke eller lave en function.
man der skal bruges noget PHP eller andet sprøg.

Som sagt ved ikke om jeg forstår med der må være noget mere kode.
Avatar billede repox Seniormester
06. februar 2011 - 19:55 #2
Prøv dette pattern istedet:
/<!--boks_start_id_1-->(.*?)<!--boks_end_id_1-->/is
Avatar billede rix Novice
06. februar 2011 - 20:02 #3
grunden til jeg gøre som jeg gøre er fordi jeg have at hele siden er i min html fil og php oversætter det
repox mange tak det ser ud til at virke :D hvis du ville ligge en svar så får du de point :D
Avatar billede repox Seniormester
06. februar 2011 - 20:04 #4
Du fik svar her...

Hvis det er fordi du forsøger at lave din egen template maskine, bør du måske overveje at gøre noget andet end at bruge noget så langsomt som regulere udtryk.
Avatar billede rix Novice
06. februar 2011 - 20:11 #5
hvordan??
Avatar billede repox Seniormester
06. februar 2011 - 20:22 #6
Formålet med en template motor er ikke at erstatte uspecificerede strenge (hverken for udskiftning eller for erstatning). Formålet er at videresende de oplysninger der skal bruges for at en skabelon har de nødvendige oplysninger der skal vises.

Et eksempel kan ses her: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1433&lngWId=8

Det er godt nok ikke en løsning jeg ville anvende, men den er bedre konstrueret end det du er ved at bevæge dig ind på.
Avatar billede rix Novice
06. februar 2011 - 21:15 #7
hmm den er meget enkel og lige til at gå gang i men hvis man skal være systemt 100% tror så ved jeg ikke hvordan man F.eks kan bruge min eksempel hvis man skal bruge en x antal bokse
Avatar billede repox Seniormester
06. februar 2011 - 21:22 #8
Det afhænger jo af hvad det er der skal lave de bokse - om det er templaten eller det der genererer templaten. For template motoren ved ikke hvor mange bokse der er - kun hvad der skal sendes af indhold til den...
Avatar billede rix Novice
06. februar 2011 - 21:23 #9
jeg bruger for det meste noget direkte fra MySQL eller fra array
Avatar billede rix Novice
06. februar 2011 - 21:25 #10
ps det gik vidst lige for hurtigt srry

antal af bokse afhænger af hvor mange rækker jeg har i min MySQL
men nogen gange bruger jeg også array

men hvordan jeg lige for de data fra de to ting til at sammarbejde med mortoren og templaten det er lige det jeg ikke ved
Avatar billede repox Seniormester
06. februar 2011 - 21:36 #11
Så ville det være bedre at gøre noget ala (med udgangspunkt i den jeg viste dig):

<?php
  ...
  $content ="":
  foreach($array_med_indhold_fra_databasen as $indhold)
  {
    $content .= $indhold;
  }

  $template = new Template();
  $template->load("design.html");
  $template->replace("content", $content);
  $template->publish();

?>


Og din design.html:

<html>
<head>
<title>{title}</title>
</head>
<body>
<br />
<br />
<!--boks_start_id_1-->
#content#
<!--boks_end_id_1-->
</body>
</html>
Avatar billede rix Novice
06. februar 2011 - 21:50 #12
hvis vi nu siger jeg ville have noget ala dette her

<table width="50%">
<tr>
<th>#content#</th>
</tr>
</table>
<br />

og gøre som din

<?php
  $abc = array("1","2","3");
  $content ="":
  foreach($abc as $indhold)
  {
    $content .= $indhold;
  }

  $template = new Template();
  $template->load("design.html");
  $template->replace("content", $content);
  $template->publish();

?>

så ville kilde koden komme til at se sådan her ud

<table width="50%">
<tr>
<th>123</th>
</tr>
</table>
<br />


det var derfor jeg ville bruge Regulære udtryk til at hive noget ud også ændre #content#
Avatar billede repox Seniormester
06. februar 2011 - 22:01 #13
Jeg er ikke sikker på hvordan jeg skal forstå dit sidste indlæg? Er det fordi det ikke virker som det skal?
Avatar billede rix Novice
06. februar 2011 - 22:11 #14
okey hvis jeg nu ville lave en gæste bog og der ville jeg bruge denne system
jeg ville så bruge denne

<table width="50%">
<tr>
<th>123</th>
</tr>
</table>
<br />

som skal være den stykke som viser hver af gæsters indlæg så den kommer til at se sådan her ud

<table width="50%">
<tr>
<th>hej 1</th>
</tr>
</table>
<br />
<table width="50%">
<tr>
<th>hej 2</th>
</tr>
</table>
<br />
<table width="50%">
<tr>
<th>også vidre</th>
</tr>
</table>
<br />

hvordan kan jeg så få klaret det??
Avatar billede repox Seniormester
06. februar 2011 - 22:19 #15
Det burde være temmelig simpelt for en som har begivet sig ud på regular expressions - det er PHP 101...
<?php
  $abc = array("1","2","3");
  $content ="":
  foreach($abc as $indhold)
  {
    $content .= '<table width="50%">
                  <tr>
                  <th>'.$indhold.'</th>
                  </tr>
                </table>
                <br />'; 
  }

  $template = new Template();
  $template->load("design.html");
  $template->replace("content", $content);
  $template->publish();

?>


og design.html
<html>
<head>
<title>{title}</title>
</head>
<body>
<br />
<br />
<!--boks_start_id_1-->
#content#
<!--boks_end_id_1-->
</body>
</html>
Avatar billede rix Novice
06. februar 2011 - 22:26 #16
ahh har stadig bøvl med at forstå det men nu kan jeg se hvad du mener mange tak :D hvis du ville have flere point så kan jeg lave en anden spøgsmål hvor du kan få flere point
Avatar billede repox Seniormester
06. februar 2011 - 22:43 #17
Skidt med pointene - hvis det har hjulpet dig videre, så er jeg glad :)
Avatar billede rix Novice
06. februar 2011 - 23:20 #18
det har det mange tak :D
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