|
| preg_match problemer... igen igen Fra : Martin |
Dato : 01-05-06 14:12 |
|
Jeg er ved at lave en custom forside dims, så jeg er ved at lave noget
med at man kan skrive noget tekst, også finder den så tekst ud fra det
skrevne.
Fx sådan her:
Velkommen til min side blablabla
Her er seneste 2 nyheder
[[nyheder:kort:2]]
og her er et par kategorier
[[kategori:kort:1,4,7]]
Det jeg jeg gerne vil ende med er at have et array der ser noget ala
sådan her ud
$array[] = array("nyheder","kort",2);
$array[] = array("kategori","kort",array(1,4,7));
Jeg havde tænkt mig at bare lave en simpel explode på : når jeg altså
først har fundet teksten, og det er det der er mit problem.
Altså kort sagt.
Hvordan finder man teksten imellem [[ og ]] med noget preg?
Jeg har prøvet således med følgende pattern
\[\[*.?\]\]
og selvfølgelig med
[[*.?]] - men da [ og ] er klasse defininationer, så skal der vel \ foran?
| |
Peter Brodersen (01-05-2006)
| Kommentar Fra : Peter Brodersen |
Dato : 01-05-06 14:27 |
|
On Mon, 01 May 2006 15:12:22 +0200, Martin <maa@scandesigns.dk> wrote:
>Jeg har prøvet således med følgende pattern
>\[\[*.?\]\]
Tilføj parenteser for at vælge hvad, du vil capture:
>\[\[(*.?)\]\]
Ved preg_match($regex,$string,$match) får du så resultatet i
$match[1]. Det kan du så efterfølgende behandle.
--
- Peter Brodersen
Ugens værktøj - sammensæt og opdel PDF-filer: http://pdf.ter.dk/
| |
Thomas Finnerup (01-05-2006)
| Kommentar Fra : Thomas Finnerup |
Dato : 01-05-06 16:36 |
|
On Mon, 01 May 2006 15:26:42 +0200, Peter Brodersen
<usenet2006@ter.dk> wrote:
> On Mon, 01 May 2006 15:12:22 +0200, Martin <maa@scandesigns.dk> wrote:
>
> > Jeg har prøvet således med følgende pattern
> > \[\[*.?\]\]
>
> Tilføj parenteser for at vælge hvad, du vil capture:
>
> > \[\[(*.?)\]\]
>
> Ved preg_match($regex,$string,$match) får du så resultatet i
> $match[1]. Det kan du så efterfølgende behandle.
Derudover skal "*.?" ændres til ".*?".
Venligst
Thomas
| |
Martin (01-05-2006)
| Kommentar Fra : Martin |
Dato : 01-05-06 17:08 |
|
Thomas Finnerup wrote:
> On Mon, 01 May 2006 15:26:42 +0200, Peter Brodersen
> <usenet2006@ter.dk> wrote:
>>>\[\[(*.?)\]\]
>>
>>Ved preg_match($regex,$string,$match) får du så resultatet i
>>$match[1]. Det kan du så efterfølgende behandle.
>
>
> Derudover skal "*.?" ændres til ".*?".
Det hjalp ihvertfald en lille smule, men desværre ikke helt.
$text = <<<EOD
Velkommen til siden blablabla
Her er der så 1 nyhed
[[nyhed:kort:1]]
og her er der 2 mere
[[nyhed:kort:2]]
det mest solgte er
[[solgt:lang:1]]
EOD;
$text = " ".$text." ";
// Så man også får starten med,
// hvis det skulle stå i starten
preg_match("/\[\[(.*?)\]\]/",$text,$out);
var_dump($out);
// Returns
array
0 [[nyhed:kort:1]]
1 nyhed:kort:1
Et meget underligt output må jeg altså indrømme. Hvor kan fejlen mon findes?
| |
Martin (01-05-2006)
| Kommentar Fra : Martin |
Dato : 01-05-06 17:13 |
|
Martin wrote:
> Det hjalp ihvertfald en lille smule, men desværre ikke helt.
>
[SNIP kode]
>
> Et meget underligt output må jeg altså indrømme. Hvor kan fejlen mon
> findes?
Ej altså... Fejlen er fundet, skulle jo selvfølgelig have valgt
preg_match_all istedet, vidste jo egentlig godt at preg_match stoppede
efter første streng fundet.
1000 tak for hjælpen, nu virker det hele bare perfekt.
| |
|
|