/ 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
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.

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste