Die verflixten Apostrophe!
Bastian
- datenbank
0 Benjamin0 Tobias Kloth0 fastix®
0 Bastian0 MudGuard
Ich habe eine Frage, die in Zusammenhang mit PHP und MySQL häufig auftaucht, aber ich bisher nie wirklich begriffen habe.
Ich habe eine MySQL-Datenbanktabelle mit Namen. Einige davon enthalten einen Apostroph, z.B. O'Hara.
Solange ich den Inhalt der Namensspalte mit PHP bloss ausgeben will, klappt das auch ganz gut:
echo $row["name"];
Wenn ich aber den Inhalt in einer URL übergeben will, gibt's Probleme:
echo "<a href='person.php?name=" . $row["name"] . "'>Linktext</a>";
Dann nämlich schliesst der Apostroph des Namens O'Hara fälschlicherweise das href-Attribut ab, womit der String name dann bloss "O" lautet.
Wer kann mir helfen, wie ich dieses Problem lösen kann? Ich bin euch sehr dankbar!
Gruss
Bastian
Hallo Bastian,
es gibt folgende Möglichkeiten:
1. nutze htmlentities($row["name"]), damit erhälst du O'Hara.
2. nutze urlencode($row["name"]), damit erhälst du O%27Hara
Ich würde (2.) nehmen, da das Apostroph in URLs eigentlich ein unerlaubtes Zeichen ist, was kodiert werden sollte (mit (1.) hast du es nur für HTML kodiert).
MfG Benjamin
Hallo Benjamin,
- nutze htmlentities($row["name"]), damit erhälst du O'Hara.
- nutze urlencode($row["name"]), damit erhälst du O%27Hara
3. verwende " als Begrenzer für html-Attribute (dann natürlich ' als Stringbegrenzer in PHP)
Grüße aus Nürnberg
Tobias [der auch 2. empfehlen würde]
Moin!
Tobias [der auch 2. empfehlen würde]
Das ist auch das einzige, was hier wirklich richtig ist.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Vielen Dank! Jetzt funktioniert's endlich! :-)
Hi,
es gibt folgende Möglichkeiten:
- nutze htmlentities($row["name"]), damit erhälst du O'Hara.
was aber kein gültiges HTML ist (bei XHTML sieht es anders aus, dort ist apos definiert - weil es in XML definiert ist; bei HTML ist apos nicht definiert).
In einer URL ist aber ' sowieso nicht erlaubt, weswegen
- nutze urlencode($row["name"]), damit erhälst du O%27Hara
in diesem Fall vorzuziehen wäre. Bei Attributen, die keine URL enthalten, wäre für HTML ' bzw. ', für XHTML ersatzweise auch ' das richtige.
cu,
Andreas