|
| ereg problem Fra : Jacob Brandrup |
Dato : 06-03-02 21:42 |
| | |
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
| |
|
|