/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Brug af Preg match til at pille variable u~
Fra : Tommy Ipsen


Dato : 01-05-04 23:43

Hej Alle

Jeg har en længere streng, som jeg skal pille nogle værdier ud af:

....blablabla...</b></td><td class="minklasse">Spændende værdi nummer
1</td><td class="minklasse"></td></tr><tr><td width="20"
class="minklasse"><b>Til:</b></td><td class="minklasse">Spændende værdi
nummer 2</td>...blablabla...

Jeg vil gerne have pillet de to spændende værdier ud og jeg kan regne
ud, at det må være muligt ved hjælp af preg_match(). Men hvordan det
skal gøres, kan jeg ikke lige gennemskue, da jeg ikke er den skarpeste
kniv i skuffen på dette område!

Jeg håber der er en eller anden venlig sjæl der kan fortælle, hvordan
det kan gøres!

NB: Det må antages, at ovenstående "mønster" er unikt nok til at det kun
optræder ét sted i strengen!

Mvh Tommy

 
 
Thomas Lindgaard (02-05-2004)
Kommentar
Fra : Thomas Lindgaard


Dato : 02-05-04 08:12

On Sun, 02 May 2004 00:43:09 +0200, Tommy Ipsen wrote:

> ...blablabla...</b></td><td class="minklasse">Spændende værdi nummer
> 1</td><td class="minklasse"></td></tr><tr><td width="20"
> class="minklasse"><b>Til:</b></td><td class="minklasse">Spændende værdi
> nummer 2</td>...blablabla...
>
> Jeg vil gerne have pillet de to spændende værdier ud og jeg kan regne
> ud, at det må være muligt ved hjælp af preg_match().

Det her er utestet:

<?php
$streng = [det dér ovenfor];
preg_match_all('_<td class="width">(.*)</td>_s', $streng, $matches);
print_r($matches);
?>

Mvh.
/Thomas

Tommy Ipsen (02-05-2004)
Kommentar
Fra : Tommy Ipsen


Dato : 02-05-04 10:18

Thomas Lindgaard wrote:

> <?php
> $streng = [det dér ovenfor];
> preg_match_all('_<td class="width">(.*)</td>_s', $streng, $matches);
> print_r($matches);
> ?>
Jeg har arbejdet lidt med det og har lige et spørgsmål til den _
(underscore) du starter og slutter med - normalt bruger man vel /
(slash), men det vil så give problemer, da dette tegn også bruges i
forbindelse med afslutning af tags i html. Er det derfor/sådan du
angiver at _ skal benyttes som "delimiter" i stedet for / ?

Mvh Tommy

Thomas Lindgaard (02-05-2004)
Kommentar
Fra : Thomas Lindgaard


Dato : 02-05-04 10:37

On Sun, 02 May 2004 11:17:45 +0200, Tommy Ipsen wrote:

> Jeg har arbejdet lidt med det og har lige et spørgsmål til den _
> (underscore) du starter og slutter med - normalt bruger man vel /
> (slash), men det vil så give problemer, da dette tegn også bruges i
> forbindelse med afslutning af tags i html. Er det derfor/sådan du
> angiver at _ skal benyttes som "delimiter" i stedet for / ?

Der ligger såmænd ikke de store hemmeligheder skjult i min brug af
_ frem for /. Man kan vist bruge sit yndlingstegn som delimiter så længe
man husker at escape det inde i det regulære udtryk.

Tidligere har jeg faktisk sværget til / som delimiter, men det giver ofte
anledning til en del tegn der skal escapes, så jeg er ved at gå over til
_ for at undgå dette.

Hvis man bruger 'verdens mest sjældent brugte tegn' (tm) så kan man nok
undgå at escape ret meget :)

Mvh.
/Thomas

Christian Joergensen (02-05-2004)
Kommentar
Fra : Christian Joergensen


Dato : 02-05-04 22:00

On Sun, 02 May 2004 11:36:58 +0200, Thomas Lindgaard wrote:

> Der ligger såmænd ikke de store hemmeligheder skjult i min brug af
> _ frem for /. Man kan vist bruge sit yndlingstegn som delimiter så længe
> man husker at escape det inde i det regulære udtryk.

Jeg holder stadig på # :)

--
Christian Jørgensen
http://www.razor.dk


Jacob Atzen (02-05-2004)
Kommentar
Fra : Jacob Atzen


Dato : 02-05-04 20:08

Tommy Ipsen <tipsen@imada.sdu.dk> writes:

> Jeg har en længere streng, som jeg skal pille nogle værdier ud af:
>
> ...blablabla...</b></td><td class="minklasse">Spændende værdi nummer
> 1</td><td class="minklasse"></td></tr><tr><td width="20"
> class="minklasse"><b>Til:</b></td><td class="minklasse">Spændende
> værdi nummer 2</td>...blablabla...
>
> Jeg vil gerne have pillet de to spændende værdier ud og jeg kan regne
> ud, at det må være muligt ved hjælp af preg_match(). Men hvordan det
> skal gøres, kan jeg ikke lige gennemskue, da jeg ikke er den skarpeste
> kniv i skuffen på dette område!
>
> Jeg håber der er en eller anden venlig sjæl der kan fortælle, hvordan
> det kan gøres!

Det er svært at gætte helt præcist, hvilket mønster du ønsker at
extracte. Men her er da lidt kode der gør det i det viste tilfælde:

<?php

$string = "...blablabla...</b></td><td ".
"class=\"minklasse\">Spændende værdi nummer 1</td><td ".
"class=\"minklasse\"></td></tr><tr><td width=\"20\" ".
"class=\"minklasse\"><b>Til:</b></td><td ".
"class=\"minklasse\">Spændende værdi nummer 2</td>...blablabla...";

$pattern = "|minklasse\">([\s\w]*)</td.*minklasse\">([\s\w]+)</td|U";
preg_match($pattern, $string, $matches);
var_dump($matches);
?>

--
Med venlig hilsen
- Jacob Atzen

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste