/ 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
regex der driller
Fra : Ulrik Nielsen


Dato : 08-11-05 09:39

hej der,

er der nogen der har en god løsning på følgende:

hvordan erstatter man alle & tegn i en url med & uden at ødelægge
& og & som jo allerede er i et rigtigt format.?

normalt ville jeg bare skrive:
$s = preg_replace('/&/', '&', $s);

- men det ville jo nettop ødelægge både & og &

håber nogen har en løsning.

på forhånd tak
--
ulrik nielsen |
-----------------+---------------------------------------------------
quote or the day | somebody was calculating pi on the server
from bofh | http://www.cs.wisc.edu/~ballard/bofh/

 
 
Ulrik Nielsen (08-11-2005)
Kommentar
Fra : Ulrik Nielsen


Dato : 08-11-05 10:58

Ulrik Nielsen wrote:
> hej der,
>
> er der nogen der har en god løsning på følgende:
>
> hvordan erstatter man alle & tegn i en url med & uden at ødelægge
> & og & som jo allerede er i et rigtigt format.?
>
> normalt ville jeg bare skrive:
> $s = preg_replace('/&/', '&', $s);
>
> - men det ville jo nettop ødelægge både & og &

- til andre interesserede

jeg fandt en løsning, men den er ikke køn...

function amp_replace($text) {
$text = str_replace('&#', '*-*', $text);
$text = str_replace('&', '&', $text);
$text = preg_replace('|&(?![\w]+;)|', '&', $text);
$text = str_replace('*-*', '&', $text);
$text = str_replace('&', '&', $text);
return $text;
}


--
ulrik nielsen |
-----------------+---------------------------------------------------
quote or the day | somebody was calculating pi on the server
from bofh | http://www.cs.wisc.edu/~ballard/bofh/

Jacob Atzen (08-11-2005)
Kommentar
Fra : Jacob Atzen


Dato : 08-11-05 11:05

On 2005-11-08, Ulrik Nielsen <un.spam@tiscali.dk> wrote:
> Ulrik Nielsen wrote:
>> hej der,
>>
>> er der nogen der har en god løsning på følgende:
>>
>> hvordan erstatter man alle & tegn i en url med &#038; uden at ødelægge
>> &#038; og &amp; som jo allerede er i et rigtigt format.?
>>
>> normalt ville jeg bare skrive:
>> $s = preg_replace('/&/', '&#038;', $s);
>>
>> - men det ville jo nettop ødelægge både &#038; og &amp;
>
> - til andre interesserede
>
> jeg fandt en løsning, men den er ikke køn...
>
> function amp_replace($text) {
> $text = str_replace('&#', '*-*', $text);
> $text = str_replace('&', '&', $text);
> $text = preg_replace('|&(?![\w]+;)|', '&#038;', $text);
> $text = str_replace('*-*', '&#038;', $text);
> $text = str_replace('&amp;', '&#038;', $text);
> return $text;
> }

Det var ikke noget du kunne have brugt rawurlencode eller venner til?

--
Med venlig hilsen
- Jacob Atzen

Ulrik Nielsen (08-11-2005)
Kommentar
Fra : Ulrik Nielsen


Dato : 08-11-05 11:24

Jacob Atzen wrote:
> Det var ikke noget du kunne have brugt rawurlencode eller venner til?

joah, måske, men det er for at parse et helt xml dokument, så hvis man
først skulle finde urler og så encode dem....

xml'en kommer fra en ekstern leverandør som åbenbart er ligeglad med at
xml'en er ugyldig. øv.

mvh
--
ulrik nielsen |
-----------------+---------------------------------------------------
quote or the day | somebody was calculating pi on the server
from bofh | http://www.cs.wisc.edu/~ballard/bofh/

Thomas Finnerup (08-11-2005)
Kommentar
Fra : Thomas Finnerup


Dato : 08-11-05 12:57

On Tue, 08 Nov 2005 09:38:57 +0100, Ulrik Nielsen <un.spam@tiscali.dk>
wrote:

> hvordan erstatter man alle & tegn i en url med &#038; uden at ødelægge
> &#038; og &amp; som jo allerede er i et rigtigt format.?

Du kan gøre det med en negativ lookahead:

$s = preg_replace('/&(?!#038;|amp;)/', '&#038;', $s);

Dette matcher alle &-tegn, der ikke efterfølges af #038; eller amp;.


Venligst
Thomas

Ulrik Nielsen (08-11-2005)
Kommentar
Fra : Ulrik Nielsen


Dato : 08-11-05 13:51

Thomas Finnerup wrote:
> Du kan gøre det med en negativ lookahead:
>
> $s = preg_replace('/&(?!#038;|amp;)/', '&#038;', $s);
>
> Dette matcher alle &-tegn, der ikke efterfølges af #038; eller amp;.

aah ! :) tænkte nok at der var et eller andet snedigt hack, jeg takker..

--
ulrik nielsen |
-----------------+---------------------------------------------------
quote or the day | somebody was calculating pi on the server
from bofh | http://www.cs.wisc.edu/~ballard/bofh/

Jeppe Bundsgaard (08-11-2005)
Kommentar
Fra : Jeppe Bundsgaard


Dato : 08-11-05 14:04

Thomas Finnerup wrote in dk.edb.internet.webdesign.serverside.php:
> $s = preg_replace('/&(?!#038;amp;)/', '&#038;', $s);

Hov, der var du hurtigere end mig, thomas.
Der er dog vist en fejl, der skal være et eller-tegn (|), den skal vist
se således ud:

$s = preg_replace('/&(?!#038;|amp;)/', '&#038;', $s);
mvh
jeppe

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jeppe Bundsgaard (08-11-2005)
Kommentar
Fra : Jeppe Bundsgaard


Dato : 08-11-05 14:07

Jeppe Bundsgaard wrote in dk.edb.internet.webdesign.serverside.php:

> Der er dog vist en fejl, der skal være et eller-tegn (),
Ja, se det forsvinder af en eller anden grund, så du havde det nok,
thomas. Så, ulrik: Der skal være et eller-tegn som er en lodret streg (på
mit tastatur er der et hul i den og den nås med alt gr. - men det er en
bærbar så det kan være anderledes på din). Det skal stå efter semikolonet
i #034;
jeppe

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Thomas Finnerup (08-11-2005)
Kommentar
Fra : Thomas Finnerup


Dato : 08-11-05 14:25

On 08 Nov 2005 13:06:38 GMT, Jeppe Bundsgaard <jeppe@bundsgaard.net>
wrote:

> > Der er dog vist en fejl, der skal være et eller-tegn (),
>
> Ja, se det forsvinder af en eller anden grund, så du havde det nok,
> thomas. Så, ulrik: Der skal være et eller-tegn som er en lodret streg (på
> mit tastatur er der et hul i den og den nås med alt gr. - men det er en
> bærbar så det kan være anderledes på din). Det skal stå efter semikolonet
> i #034;

Det må være din nyhedslæser, der fjerner tegnet. Jeg kan sagtens se
det i mit eget indlæg.


Venligst
Thomas

Ulrik Nielsen (08-11-2005)
Kommentar
Fra : Ulrik Nielsen


Dato : 08-11-05 15:11

Thomas Finnerup wrote:
> Det må være din nyhedslæser, der fjerner tegnet. Jeg kan sagtens se
> det i mit eget indlæg.

jep, jeg havde heller ikke problemer med at se det...
- tak for hjælpen.

--
ulrik nielsen |
-----------------+---------------------------------------------------
quote or the day | somebody was calculating pi on the server
from bofh | http://www.cs.wisc.edu/~ballard/bofh/

Jeppe Bundsgaard (08-11-2005)
Kommentar
Fra : Jeppe Bundsgaard


Dato : 08-11-05 14:00

Ulrik Nielsen wrote in dk.edb.internet.webdesign.serverside.php:
> hej der,
>
> er der nogen der har en god løsning på følgende:
>
> hvordan erstatter man alle & tegn i en url med &#038; uden at ødelægge
> &#038; og & som jo allerede er i et rigtigt format.?
>
> normalt ville jeg bare skrive:
> $s = preg_replace('/&/', '&#038;', $s);
>
Hej Ulrik
Prøv denne:
$s = preg_replace('/&(?!#038)/', '&#038;', $s);
Den skulle gerne lave en lookahead assertion og se om der ikke er en #038
efter &'et.
Se for øvrigt altid denne grundige vejledning:
http://dk2.php.net/manual/en/reference.pcre.pattern.syntax.php
Mvh
jeppe

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

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

Månedens bedste
Årets bedste
Sidste års bedste