/ 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
ereg problem
Fra : Jacob Brandrup


Dato : 06-03-02 21:42

hej

er der en ereg haj der kan løse dette problem for mig.
jeg bruger følgende experssion til at udskifte noget kode med

$data = ereg_replace("\[url=([^\].*]*)\]([^\[/url\].*]*)\[/url\]", "<A
HREF=\"\\1\" TARGET=\"_top\">\\2</A>",$data);

men ereg er jo grådig og vil altid vælge den største string den kan finde
hvilket betyder at

[url=http://www.domain.com]text[/url][url=http://www.domain.com]text[/url]

bliver til

<A HREF="http://www.domain.com]text[/url][url=http://www.domain.com"
TARGET="_top">text</A>

HJÆLP !!!!! :p

mvh
Jacob Brandrup






 
 
Peter Brodersen (07-03-2002)
Kommentar
Fra : Peter Brodersen


Dato : 07-03-02 02:24

On Wed, 6 Mar 2002 21:41:36 +0100, "Jacob Brandrup"
<webmaster@forgottenrealms.dk> wrote:

>er der en ereg haj der kan løse dette problem for mig.
>jeg bruger følgende experssion til at udskifte noget kode med
>
>$data = ereg_replace("\[url=([^\].*]*)\]([^\[/url\].*]*)\[/url\]", "<A
>HREF=\"\\1\" TARGET=\"_top\">\\2</A>",$data);

..* er altid farligt, da det vil kunne matche vilkårligt fremover.

Hvis du skifter til preg_replace, kan du bruge .*? for ikke-grådige
matches. Eller sætte U som flag til udtrykket. Følgende er utestet:

$data = preg_replace("!\[url=([^\].*]*)\]([^\[/url\].*]*)\[/url\]!U",
"<A HREF=\"\\1\" TARGET=\"_top\">\\2</A>",$data);


--
- Peter Brodersen

Peter Brodersen (07-03-2002)
Kommentar
Fra : Peter Brodersen


Dato : 07-03-02 03:22

On Thu, 07 Mar 2002 02:23:33 +0100, Peter Brodersen
<professionel@nerd.dk> wrote:

>$data = preg_replace("!\[url=([^\].*]*)\]([^\[/url\].*]*)\[/url\]!U",
>"<A HREF=\"\\1\" TARGET=\"_top\">\\2</A>",$data);

Du får den lige i en noget mere simpel udgave, der rent faktisk også
virker ;)

$data = preg_replace(
"!\[url=([^]]*)\](.*?)\[/url\]!",
"<A HREF=\"\\1\" TARGET=\"_top\">\\2</A>",
$data
);

Problemet i dit eksempel er bl.a., at du forsøger at lave en negation
i simplificeret stil med: [^/url] - det er mildest talt noget rod.

Husk, at [...] er en klasse, der blot indeholder vilkårlige af
bogstaverne herinde.

Jeg har nu i stedet brugt .*? for at matche teksten indtil [/url]

--
- Peter Brodersen

Jacob Brandrup (07-03-2002)
Kommentar
Fra : Jacob Brandrup


Dato : 07-03-02 15:08

> $data = preg_replace(
> "!\[url=([^]]*)\](.*?)\[/url\]!",
> "<A HREF=\"\\1\" TARGET=\"_top\">\\2</A>",
> $data
> );

Mange tak

mvh
Jacob N Brandrup



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

Månedens bedste
Årets bedste
Sidste års bedste