Das kaufmännische „und” geht mir wirklich richtig auf den Sack. Jedes mal meckert der Validator:
You may have forgotten to "escape" an ampersand (&) character, thus causing the validator to believe that you created a new, undefined entity that starts with "&". If you wish to cause an "&" to appear within text or a URL, escape it by using "&".
Nein! Ich will keine neue entity eintragen und ich habe auch nicht vergessen das & zu maskieren, ich will es, aber es geht nicht. Ich teste gerade mit phpBB und dem Newsaddon leider werden alle Links mit dem unmaskierten & ausgegeben. Bei Haseblog habe ich vor längerem eine Lösung diesbezüglich gesehen, aber anscheinend bin ich zu verpeilt diese Lösung richtig einzusetzen. Das Prinzip dahinter ist aus dem Dokument aus die php.ini zu überschreiben:
ini_set("arg_separator.output","&");
Das soll in den Dokumentkopf, aber es klappt irgendwie nicht. Ich habe es in Klartextform und innerhalb von <?php ?>, vor dem Doctype und innerhalb von <head></head> notiert, aber es nix geändert.
Hat jemand einen Vorschlag?
Hinweis:
WordPress 3.3 für Autoren & Redakteure
Der schnelle und unkomplizierte Einstieg auf 45 DIN-A4-Seiten
Tut mir Leid, aber die Kommentar-Funktion ist momentan deaktiviert.
1. – Garvin
Kommentar vom 20. May 2004 um 14:41
Das Problem ist, dass dieser output-separator auch nur für PHP-intern erzeugte Links gilt. Es ist nicht so, dass durch das Setzen davon automagisch alle Links innerhalb der Seite ersetzt werden. Vielmehr nur für alle Links, die ein von HP angehängtes PHPSESSID enthalten; darum scheint es Dir in dem Newstool ja nicht zu gehen.
Es gibt eine Möglichkeit ALLE &s in einer Seite zu ersetzen:
ob_start();
…hier dein üblicher seitenkope
$content = ob_get_contents();
ob_end_clean();
echo preg_replace('@&([^;& ]*)@', '&\1', $content);
Der reguläre Ausdruck ist gerade meinem Geist entsprungen und kann eventuell nicht funktionieren; das gewünschte Prinzip wäre, dass er ein &(beliebige Zeichen ausser entities) in ein &(originalzeichen) ersetzt. Ein einfaches str_replace('&', '&', $content) würde nämlich aus & ein & machen. Und das will ja keiner.
Ausserdem ist die Methode alles durch den Output-Buffer zu jagen enorm dirrrty und performanceraubend.
Worauf ich hinauswill: Du wirst vermutlich nicht umgehr kommen, die News-Applikation von Hand so umzuschreiben dass sie korrekte entities erzeugt.
While we're at it: Ich finde man (=W3C) hätte für Entities ruhig ein ° oder ^ Zeichen nehmen können; das taucht viel seltener aus und würde nicht die o.g. Probleme erzeugen.
HTH,
Garvin.
2. – Perun
Kommentar vom 21. May 2004 um 11:40
Hi Garvin,
danke für die Hilfe. Ich habe den Newsscript so angepasst das anstatt & & in den Beiträgen bzw. Links erscheint.
3. – Krzysztof
Kommentar vom 21. May 2004 um 13:05
Es geht auch mit diesem Eintrag in .htaccess-File
php_value arg_separator.output "&"
4. – Krzysztof
Kommentar vom 21. May 2004 um 13:07
aghrrr!
IfModule mod_php4.c
php_value arg_separator.output "and + amp;"
IfModule
5. – quality
Kommentar vom 21. August 2004 um 23:25
Hi Garvin,
6. – kolon
Kommentar vom 26. October 2004 um 15:24
Man kann das & auch einfach durch & automatisch ersetzen lassen:
str_replace("&","&",$ergebnis);
So hab ich das auf meiner Seite gelöst, klappt wunderbar. Wenn das ganze dann noch in eine *.inc ausgelagert wird, kann man es ganz einfach auf jeder Seite includen. Auf jeden Fall muss das in der Seite Includet sein, in der die Beiträge geschrieben werden…