Martin Larsen wrote:
> David Konrad wrote:
>
>> det kører fint, men hvis jeg vil have title med i
-tag'et,
>> indkapslet i ' (som href helst også burde være, helst ", for
>> XHTML-validering) echo ">> TITLE='".$row[title]."'>".$row[name]."";
>>
>> altså title (og href) indkapslet med ' , så får jeg
>>
>> Parse error: syntax error, unexpected T_STRING, expecting ',' or ';'
>> in [path] : eval()'d code on line *
>
>
> Det virker altså fint nok. Har lige prøvet.
>
> Eksekverer du nu også koden som jeg foreslog? Altså ved at evaluere
> hele molevitten på en engang, indskudt mellem "?>" og "" ?
Undskyld det sene svar! Har meget om ørerne! Tak for hjælpen i øvrigt.
Heredoc er bare ikke en option ift problemet, og jeg er ikke helt sikker på
at problemet helt er forstået.
Det handler ganske enkelt om, at er indlejret i HTML, gemt i
en streng i en database, hvor eval() så kaldes. Løsningen er ikke de ting du
foreslår, men slet og ret at kalde en funktion inde fra eval()-koden, der
genererer de link med korrekte qoutes, som ikke er mulige fra eval()-koden,
der selv er qoutet (det er derfor problemet opstår) ala
function linkxxx($url,$text,$title='') {
echo "
".$text."";
}
så fungerer det, og det er i øvrigt langt bedre ift efterfølgende rettelser
mv.
(...)
> 1.
> Linjen her kan gøre væsentligt enklere:
>
> echo "
> TITLE='".$row[title]."'>".$row[name]."";
>
> Nemlig:
>
> echo "
> TITLE='$row[title]'>$row[name]";
Ja, men jeg går pimært ind for læsbarhed og lettilgængelighed ift rettelser,
også om 7 måneder. "Enklere" er ikke nødvendigvis lig med hurtigere, mere
elegant eller mere læsbart. Ovenstående er sådan set "du kan skrive det med
færre tegn", helt unødvendigt i mine øjne. I øvrigt er det et helt
frivilligt, gratis projekt, så jeg er ikke under tidspres mv, og bruger det
lidt som eksperimentarium.
> 2.
> Du bør putte apostroffer omkring indexnavnene, altså $row['name'] i
> stedet for bare $row[name]. Ellers får muligvis grimme "notices" frem
> på skærmen. Det ved du måske allerede, jeg nævner det bare!
Det indikerer lidt, at du ikke helt har forstået problemet. Når jeg ikke kan
sætte singleqoutes om en streng, kan jeg jo heller ikke sætte singleqoutes
om en array-angivelse.
> Ovenstående gælder dog ikke hvis det inden i en tekststreng, så må der
> IKKE være apostroffer, følgender er altså ugyldigt: echo
> "$row['name']";
> 3.
> Hvis datafilen kommer fra en database, er der måske indskudt slashes
> som forstyrrer koden. Dem må du da fjerne først!
Jeg fjerner slashes og oversætter alle tegn til HTML-koder, &<>æøå²é mv, i
mit 35.000 liniers delphi-administrations program, undtagen naturligvis
blokke der er markeret som at de skal rendereres i PHP.
Tusind tak for dit svar, men det var no offense var ikke en "PHP -
grundlæggende modul, uge 1", jeg fiskede efter :-) Det var én af den slags
dumme situationer, hvor forskellige forudsætninger blandet sammen influerer
negativt på hinanden, en slags deadlock.
mvh
david