"&" Zeichen in PHP Code (auf Rocky9 VM)?
Servus zusammen,
ich möchte gleich Vorweg sagen, dass ich bisher nicht so viel Ahnung von "Dem ganzen Zeug" habe. Ich mach momentan eine Ausbildung wo ich das Stück für Stück lerne und ja, ich kann auch in der Arbeit wen Fragen, ob er hilft. Mein Problem besteht jetzt jedoch schon länger und ich würde nur gerne eine mögliche Fehlerquelle beseitigen damit ich meine Fragen dazu auch weiter einschränken kann.
Meine Frage ist folgende: Im folgenden Code, wird da das "&" Zeichen als Teil des Namen erkannt prinzipiell oder eben nicht und PHP denkt, ich würde versuchen was anderes zu Coden?
{
// Check if user is a PTS member
if($organization == 'Firmen Name hier' || $organization == 'Firmen.Name hier' || $organization == 'Firmen.Name & Hier')
{
Das Problem hier ist erst nach unserer Umfirmierung aufgetaucht, da wurde "Firmenname Hier" eben in "Firmenname & Hier" geändert, davor hat alles geklappt mit dem Code. Deswegen meine Frage, kann das & Zeichen schuld sein, dass es nicht mehr geht? Wenn nein, kann es an vielen anderen Dingen liegen, das ist mir klar. Nicht in der Datenbank drinnen oder im AD steht es doch anders oder was auch immer. Mich interessiert hier wirklich nur, ob der Name aka das & Zeichen Probleme machen kann.
Vielen Dank schonmal für eure Antwort
2 Antworten
Also grundsätzlich ist so ein Test schon mal sehr unsauber. Wenn es denn aber nicht anders geht, dann würde ich den Firmennamen vorher erst mal „normalisieren“. Zum Beispiel so:
// String in Kleinbuchstaben umwandeln
$organization = strtolower($organization);
// & & Punkt und drei/zwei Leerzeichen mit einem Leerzeichen ersetzen
$organization = str_replace(['&', '&', '.', ' ', ' '], ' ', $organization);
// Leerzeichen am Anfang und Ende entfernen
$organization = trim($organization);
Dann musst du nicht so viel testen, da der Text kleingeschrieben ist und & und . daraus verschwunden sind.
if ($organization == 'firmen name hier') {
Das sollte das ganze schon mal vereinfachen.
Und wie iQa1x schon schrieb, wir der Ampersand in HTML mit & codiert. Das sollte man so zwar eigentlich nicht in Datenbanken schreiben aber ist bei dir vermutlich passiert.
Der Ampersand selbst hat in PHP eine Bedeutung aber nicht innerhalb eines Strings.
Das '&' im String ist kein Problem und wird behandelt wie jedes andere Zeichen auch. Allerdings solltest du mal schauen, wo die Daten herkommen und ob da auch wirklich ein "&" in der Variable steht. Evtl. kommt der Variableninhalt irgendwo her, wo das '&' anders dargestellt wird, in HTML hat das z.B. eine sezielle Bedeutung, weswegen da ein '&' als '&' codiert wird.