Avatar billede thulstrup Nybegynder
23. juli 2003 - 16:44 Der er 14 kommentarer og
1 løsning

problem med #-tegnet

Jeg sender en streng fra min Flash text editor til et PHP script der skal indsætte teksten i en database. Strengen kan f.eks. se sådan her ud:

<P ALIGN="LEFT"><FONT FACE="_sans" SIZE="11" COLOR="#000000">Hej</FONT></P>

, men det eneste der bliver indsat er:
<P ALIGN="LEFT"><FONT FACE="_sans" SIZE="11" COLOR="

PHP stopper altså ved # tegnet. Hvorfor det?

Jeg har uden held prøvet at lave # tegnet om til unicode:
$indhold = ereg_replace("#", "\u23", $indhold);
Avatar billede TRoXa Novice
23. juli 2003 - 16:48 #1
har du lavet nogle \ foran alle de gåseøjne ?
Avatar billede phpwiz Nybegynder
23. juli 2003 - 16:49 #2
lad os se den fulde source code hvor problemet er.
Avatar billede thulstrup Nybegynder
23. juli 2003 - 16:50 #3
Jeg laver en:
$indhold = ereg_replace("\"", "\\\"", $indhold);

først i scriptet. Er det godt nok?
Avatar billede TRoXa Novice
23. juli 2003 - 16:52 #4
tjaa .. jeg ville ikke gøre det sådan ..

Jeg ville fra din text editor indsætte det sådan her

$tekst = <<P ALIGN=\"LEFT\"><FONT FACE=\"_sans\" SIZE=\"11\" COLOR=\"#000000\">Hej</FONT></P>
Avatar billede thulstrup Nybegynder
23. juli 2003 - 16:52 #5
Fuld source code (ikke at den er så lang):

<?php

include_once("config.php");

// tilslut til databasen:
connectToDB();

$indhold = ereg_replace("\"", "\\\"", $indhold);
$indhold = ereg_replace("#", "\u23", $indhold);

// opbyg forspørgelsen
$query = "INSERT INTO tekst (id, indhold) VALUES(NULL, '$indhold')";

// udfør forspørgelsen
$result = @mysql_query($query);
   
// hvis forspørgelsen blev udført ordenligt
if ($query){
    // fortæl brugeren at det var ok
    print "<b>Nyheden blev oprettet</b>";

}else{
    // ellers fortæl brugeren at det ikke var ok
    print "<b>Der opstod en fejl</b>";
}

// luk forbindelsen til databasen
closeConnection();

?>
Avatar billede TRoXa Novice
23. juli 2003 - 16:52 #6
hov .. en < for meget foran
Avatar billede TRoXa Novice
23. juli 2003 - 16:54 #7
er det altid samme skrifttype og størrelse osv du indsætter ?
Avatar billede TRoXa Novice
23. juli 2003 - 16:55 #8
hvis ja ville jeg nok bare gøre sådan her

$indhold = "<P ALIGN=\"LEFT\"><FONT FACE=\"_sans\" SIZE=\"11\" COLOR=\"#000000\">" . $indhold . "</FONT></P>";
Avatar billede TRoXa Novice
23. juli 2003 - 16:55 #9
ellers kunne du jo bruge tekst værdier som farver i stedet for .. dvs black istedet for #000000
Avatar billede thulstrup Nybegynder
23. juli 2003 - 17:04 #10
Nu er alle "-tegn escaped. Så nu modtager scripet f.eks. en streng der hedder:

$indhold = "<TEXTFORMAT LEADING=\"2\"><P ALIGN=\"LEFT\"><FONT FACE=\"_sans\" SIZE=\"11\" COLOR=\"#000000\"><B>tekst</B></FONT></P></TEXTFORMAT>";

men det stopper stadig ved #-tegnet....

og nej det er ikke altid den samme skrifttype og størrelse.
Avatar billede thulstrup Nybegynder
23. juli 2003 - 17:08 #11
i url'en ser det sådan her ud:

indhold=<TEXTFORMAT%20LEADING=\"2\"><P%20ALIGN=\"CENTER\"><FONT%20FACE=\"_sans\"%20SIZE=\"11\"%20COLOR=\"#00FFFF\"><B>tekst</B></FONT></P></TEXTFORMAT>


,men hvis jeg echo'er det ud ser det sådan her ud:

<FONT FACE=\\\"_sans\\\" SIZE=\\\"11\\\" COLOR=\\\"

??
Avatar billede schaefner Juniormester
23. juli 2003 - 17:10 #12
Det fordi # har en anden betydning når det er i url'en
Avatar billede thulstrup Nybegynder
23. juli 2003 - 17:26 #13
ahh ja, det er selvfølgelig til hash'en. Så hvis jeg laver #-tegnet om til noget andet i Flash og så laver det tilbage igen i PHP, så virker det.

Ligger du et svar schaefner?
Avatar billede schaefner Juniormester
23. juli 2003 - 17:29 #14
svar'

mvh. Jesper Sørensen
Avatar billede thulstrup Nybegynder
23. juli 2003 - 17:30 #15
Takker!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester