& durch &amp ersetzen

karl123

Erfahrenes Mitglied
Hallo allerseits,

ich suche ein Script / regulären Ausdruck, bei dem das & durch ein &amp ersetzt wird. Ich bekomme derzeit Fehlermeldungen bei Links in der Form href="irgendwas.html?x1=a&x2=b". Das müsste heißen: href="irgendwas.html?x1=a&x2=b".
Natürlich dürfen dann alle anderen Ersetzungszeichen wie z.B. Ä für Ä nicht verändert werden.

Wer kann helfen? Wie muss ich vorgehen?
 
Und was für Fehlermeldungen bekommst Du denn?
Ich kann mir nur vorstellen das eventuell ein XHTML-Validator probleme macht, aber nicht PHP.

Ich selbst verwende für meine Scripte Links welche im HTML-Quelltext in Form von:

HTML:
<a href="index.php?test=1&amp;test2=2">....</a>

Es gilt ja nur im Browser das auszugeben, zurückgegeben wird es in PHP als &.
Wenn Du die Funktion header() verwendest, kannst du ganz normal & verwenden.
 
Hallo Maniac_81,

für meine eigenen Links verwende ich &amp; wie Du es auch verwendest. Ich habe aber auf einer meiner Seiten einen Feed, der bei Links das & alleine verwendet. Auf den Feed habe ich keinen Einfluss.
Die Seite wird, soweit ich das beurteilen kann, richtig dargestellt, aber Firefox meldet mir Fehler.

Soll ich das denn einfach ignorieren?
 
edit: @ Zodiac: Ich denke er meint eine Warnung vom Validator den es als Addon für den FF gibt.


Dann musst Du es so machen wie Zodiac es beschrieben hat:
Hier eine kleine Function dafür:
PHP:
function str_convert($var)
{
        $str = str_replace("&", "&amp;", $var);
        return $str;
}
$url = "link.php?var1=blubb&var2=blubblbu";
echo str_convert($url);
 
Zuletzt bearbeitet:
Zur Funktion:

Ich denke, dass die Funktion nicht immer das richtige Ergebnis bringt. So wird z.B. aus "Ärger", das als "&Auml;rger" vorliegt, dann "&amp;Auml;rger". Das gilt dann auch für alle anderen Sonderzeichen, die mit & maskiert sind.

Zu den Bildern:
Die Website ist noch nicht veröffentlicht; daher lege ich hier Bilder bei.
 

Anhänge

  • Seite.jpg
    Seite.jpg
    82,5 KB · Aufrufe: 40
  • code.jpg
    code.jpg
    186,3 KB · Aufrufe: 35
Das wäre bei
PHP:
htmlentities($url);
der Fall.

Bei meiner Funktion wird nur das "&" Zeichen ersetzt. Wobei ich immernoch nicht verstehe warum Du nicht alle Zeichen umwandelst, Im Browser werden Sie richtig übergeben, auch wenn Du sie an PHP sendest.
 
Ich glaube jetzt, dass die Funktion geht, da in einem Link üblicherweise keine Ersetzungen vorliegen. Ich habe das jetzt einmal so gemacht - fehlerfrei.

Danke für die Hilfe.
 
Hallo Maniac_81,

für meine eigenen Links verwende ich &amp; wie Du es auch verwendest. Ich habe aber auf einer meiner Seiten einen Feed, der bei Links das & alleine verwendet. Auf den Feed habe ich keinen Einfluss.
Die Seite wird, soweit ich das beurteilen kann, richtig dargestellt, aber Firefox meldet mir Fehler.

Soll ich das denn einfach ignorieren?

Du kannst trotzdem htmlentities() verwenden, denn das hat einen optionalen 4.Parameter, mit dem man festlegen kann, ob vorhandene Entitäten nochmals umgewandelt werden sollen.

Setzt du ihn auf false, wird aus & ein &amp; , ein vorhandenes &amp; bleibt aber wie es ist, und wird nicht zu &amp; amp; :google:

Du kannst diese Methode also auf alle URLs anwenden, egal ob bereits korrekt codiert oder nicht :)
 

Neue Beiträge

Zurück