WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Ersätta & med &amp; förutom i <script>-tagg (https://www.wn.se/forum/showthread.php?t=17591)

qson 2006-11-18 18:01

Jag behöver ersätta &-tecken med &amp; med hjälp av preg_replace.

Följande pattern hittar &-tecken som inte är ett specialtecken (typ &copy; &auml;):
Kod:

/&(?![A-Za-z0-9#]*;)/
Om jag kör denna på dokumentet funkar det precis som det skall, förutom när det finns ett inbakat javascript som innehåller &&. Detta blir &amp;&amp; vilket inte är nån höjdare.

Jag har försökt i några timmar nu att utesluta &-tecken i script-taggarna, men jag har inte kommit längre än föregående syntax samt följande för att hitta script-taggarna.
Kod:

/(<script[\s\S]*>[\s\S]*[\s\S]*<\/[\\s\\t\\r\\n]*script[\\s\\t\\r\\n]*>)/U
/U är där för att inte ta flera script-taggar samtidigt...

Nån som har ett förslag på hur jag löser detta?

DeSoto 2006-11-18 19:29

Du skulle kunna göra så att du först ersätter allt, sen ersätter du tillbaka det inom <script>. Inte den snyggaste lösningen, men du slipper hålla på med det flera timmar. :) Eller flytta javascript-koden till externa filer, vilket är det rätta sättet att ha javascript.

jonny 2006-11-19 17:00

Du ersätter nu alla & som inte återföljs av en bokstav eller siffra.

Alt1
Ersätt bara & som återföljs av whitespace.

Alt2
Ersätt alla & som inte återföljs av A-Z, 0-9 eller &

qson 2006-11-21 15:03

Jonny: Nu ersätter den alla &-tecken som inte återföljs av bokstäver, siffror och ett semikolon (&copy;), och jag kan inte ersätta och som följs av whitespace för jag vill att den ska behandla URLer.

DeSoto: Skall testa ditt förslag. Verkar bra....


Alla tider är GMT +2. Klockan är nu 23:49.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson