28. juni 2003 - 21:02Der er
27 kommentarer og 1 løsning
fejl ved <p></p>
Hej
Jeg forsøger at lave en teksteditor, hvor man skal kunne skriv html kode. Det gør og¨så fint med at få det til at virke, undtagen når man bruger <p> og </p>. Man skal skrive html i editoren, så ligger den det over i en db og derefter skal det kunne læses tilbage i editoren igen. Men det vil ikke blive vist i editoren så snart et <p> sniger sig ind.
Hvorfor? og hvordan løses det? - ud over bare at lave en str_replace() eller sådan noget
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
[^>] plejer at betyde "alle tegn der ikke er et >-tegn.
*-multiplyeren betyder 0 eller flere, og den plejer at være "grådig" - dvs at den tager så meget som den kan komme til.
Når du derfor skriver <p([^>]*)> så forsøger den at match så mange ikke->-tegn som den kan komme til (ps: jeg ved ikke helt hvorfor du har parantesrene med - du bruger jo ikke $1 i denne replace). Det at * er grådeg, betyder at du kan få problemer hvis der er flere </p> tags i teksten - idet dit pattern vil forsøge at matche med det sidste.
Du har også et problem med din ( )*\s* kosntruktion, som ikke vil virke hvis whitespace kommer før eventuelle 'ere (eller blandet med disse).
Mit råd - start først med at gigge godt og grundigt på samtlige dine regulære udtryk. De kunne trænge til det!
det er en editor, jeg har fundet på nettet, så mit script her er ikke "mit" i den forstand at jeg har skrevet det, så jeg kan ikke forklarer noget af alt det der står i det. Jeg prøvede at fjerne hele denne funktion, men sjovt nok så vil editoren stadig ikke vise teksten, hvis der findes et <p>. Så måske er problemet alligevel ikke i denne funktion/dette script. Men jeg har ledt hele editoren igennem for <p>-tags og denne stump kode er det eneste sted det forekommer
UNDSKYLD, jeg har lige fundet ud af den funktion kun bliver brugt til at fjerne teksten i editoren for ALT HTML kode. Det er en knap der hedder noget i retning af "clean html".
Så problemet ligger ikke der. Og eftersom jeg ikke kan finde <p>-tagget andre steder i koden, så må der være noget mystisk der gemmer sig
glem den kode, nu er jeg kommet nærmere problemet.
I min db gemmer jeg teksten i en longtext og jeg har nu fundet ud af problemet faktisk kommer lige så snart jeg laver et linieskift i den longtext direkte i databasen.
Det vil sige at hvis der står: <p>fdsadsa</p> <p>sfsdafdsf</p>
så virker det ikke.
Men det gør dette: <p>sadsadsad</p><p>gfdsgkjlk</p>
Så problemet er åbenbart linjeskiftet i den longtext attribut i databasen, så troede måske jeg kunne bruge nl2br(), men det virker ikke
så enten skal jeg fjerne det linje i koden (ikke selve teksten) inden jeg sætter koden ind i databasen, eller så skal det gøres når jeg har trukket koden ud af databasen
det har du ret i, og det er heller med min gode vilje at jeg ikke poster noget kode. Men problemet er netop at jeg ikke ved hvor problemet er i min 1800 linje lange kode. Så jeg kan nærmest kun præsentere hvordan jeg oplever mit probleme og så håbe på at nogen siger "AHA" og kan se hvad der er galt. Jeg skulle mene at have lokaliseret problemet nu, som postet i de sidste indlæg, nu skal der bare løses på en måde
Jeg tog den fordi den kun fylde 2 filer. Selven editoren ligger faktisk kun i én fil, så jeg synes det var til at finde rundt i, istedet for flere biblioteker og flere filer, som den du skriver. Den jeg bruger og sgu også "skidenem" at bruge, der er åbenbart bare dette lille bitteproblem når linjen i koden bliver delt, og det kan ikke passe at nogen ikke ved hvordan det løses.
encorez -> Tja, men hvis din 22:06:54 kode er et eksempel på hvad der er i de 2 filer, så er det godt nok slamkode! Jeg er ikke sikker på at jeg ville røre det med en ildtang.
Mht. dit longtext problem (23:13:33) så kan det meget vel tænkes at du, i scriptet, skal initialisere en eller anden konstant med makslængden sådan en longtext-variabel kan være.
I øvrigt; Det kan da godt tænkes at det er linjeskiftet som er problemet - men det svare jo bare ikke på hvorfor du får dette netop ved <p>-taggen og ingen andre steder!? Og hvorfor overhovedet have et linjeskift? Browseren som skal vise det er ligeglad.
jeg skriver netop i nogle af mine sidste indlæg at jeg nu har fundet ud af at det IKKE er ved <p> alligevel. Problemet opstår når der kommer et linjeskift i min longtext
så måske ligger problemet i denne funktion. Det er her værdien af textområdet bliver sat:
function setValue() { //var new_contents = self.opener.document.getElementById("contents_main").value; foo.document.write(''); foo.document.close() //foo.document.body.innerHTML = '0' foo.document.body.innerHTML = '<?=$body?>' } $body er selvfølgelig teksten som jeg har hentet ud fra databasen og lagt i en variabel
tipsen -> jeg har opgivet den valgte editor og bruger nu din. Og ja, den er sgu smart, det må jeg sige. Dog har jeg et problem med at indstille hvor den skal hente billeder fra. Altså når jeg i selve editoren trykker på "indsæt billede", så kommer den frem med det nye pop-up vindue og siger at det ikke er konfigureret korrekt. Jeg synes det eneste man kan indstille noget med billeder er i: config/spaw_control.config.php hvor man kan ændre $spaw_base_url, men uanset hvad jeg forsøger at sætte den til, så virker det ikke. Håber du har brugt den og kan svare på dette.
Jeg har desværre ikke haft tid til det, men det skal fikses i løbet af de næste par uger (har præcis samme problem som dig!) - jeg kigger måske på det senere på ugen!
Jeg har forøvrigt rettet nogle steder i den danske udgave af toolbaren og regner med at sende rettelserne ind til programmørerne - der var nogle fejl i nogle af oversættelserne!
lyder godt, send til encorez_crap@hotmail.com takker
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.