• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

syntax-Fehler bei split-Funktion

J

j-l-n

Guest
Folgender Code
PHP:
function split_email($email){
 $teil = explode("@", $email);
 $arr['username']=$teil[0];
 $arr['domain']=$teil[1];
 return $arr;
}

$email_input = strtolower(trim($_POST['email']));
split_email("$email_input");

liefert mir
Parse error: syntax error, unexpected '$email_input' (T_VARIABLE)

Aber warum? Ich bin mir sicher, dass ich nirgendwo ein ; vergessen habe oder eine () oder {} zu viel habe...
 
Keine Ahnung, ob das den Fehler verursacht aber ich würde schreiben:
$arr = split_email($email_input);
denn deine Funktion gibt ja etwas zurück.
 
Lass die " bei $email_input mal weg, bei Variablen Übergabe sind die überflüssig.

In den PHP Fehlermeldungen steht eigentlich auch immer die Zeilennummer mit drin, oder?
 
Hilft leider beides nichts. Habe jetzt auch ein extra Skript erstellt, in dem nur diese Funktion ist - um auszuschließen, dass der Fehler wo anders herkommt:
PHP:
//leider ist der Code mit den vielen unsichtbaren Zeichen nicht mehr im Beitragsverlauf zu finden

Jetzt erscheint etwas ganz anderes, nämlich
Parse error: syntax error, unexpected ' function split_email' (T_STRING) in /pfad/skript.php on line 5

EDIT: ich wollte den ursprünglichen Code mit den vielen Sternchen wiederhergestellt, da dadurch das Problem ausgelöst wurde - finde diesen aber nicht mehr. Ich hatte diese korrigiert, da ich dies nur für einen Fehler des Forum-Editors hielt...
 
Zuletzt bearbeitet:
Was bedeuten die Sterne im Code?
Keine Ahnung - die hab ich gerade erst gesehen. Die sind nicht im Skript, sondern waren beim Einfügen plötzlich da. Und das bringt mich auf eine Idee: evtl. stimmt etwas mit der Zeichenkodierung der Datei nicht...
 
Ja, daran dachte ich auch schon. Ist mir auch mal passiert, als ich Code aus dem Browser in den Editor kopiert hatte waren unsichtbare Zeichen die einen Syntaxfehler verursachten.
 
Ja, daran dachte ich auch schon. Ist mir auch mal passiert, als ich Code aus dem Browser in den Editor kopiert hatte waren unsichtbare Zeichen die einen Syntaxfehler verursachten.

Gerade Editor auf "Western Language" eingestellt und siehe da: lauter "Á"s mitten im Code...
Hast du eine Ahnung, wie die darein kommen konnten? Denn der Code ist selbst beschreiben, und nicht irgendwoher kopiert...
 
Was benutzt du denn für einen Editor?

Bei Eclipse z.B. ist mir das auch schon öfters passiert. Das Projekt und der Workspace sind auf utf-8 eingestellt, aber die Datei war plötzlich iso-....
 
Bei selbstgeschriebenem Code ist mir das im Notepad ++ noch nie passiert. Nur beim kopieren aus dem Browser und zwar nur beim IE11. Bei IE <= 10 hatte ich das auch nie.
 
Also, ich konnte das Problem durch das Entfernen der fehlerhaften Zeichen tatsächlich lösen!
@Rico: ich benutze Notepad++. Hatte die ganze Zeit auf UTF-8 und frage mich jetzt, wie da ISO-Zeichen reinkommen konnten...
 
Bei selbstgeschriebenem Code ist mir das im Notepad ++ noch nie passiert. Nur beim kopieren aus dem Browser und zwar nur beim IE11. Bei IE <= 10 hatte ich das auch nie.

Zwei Sachen:

-könnte das bei mir damit zusammenhängen, dass ich die Datei anfangs auf einem Win XP-Rechner bearbeitet habe und dann unter Win7? Fände ich aber komisch...
-welche Notepad-Version benutzt denn du?

PS: du darfst mal wieder ein Thema auf "Gelöst" umstellen ;)
 
Julian, da muss irgendwann mal was reinkopiert worden sein. Vielleicht an einer anderen Stelle? NP ++ macht sowas nicht selbständig.
 
Julian, da muss irgendwann mal was reinkopiert worden sein. Vielleicht an einer anderen Stelle? NP ++ macht sowas nicht selbständig.

Ah, jetzt fällt's mir wieder ein: und zwar hab ich - wie vorher erwähnt - ja an dem anderen PC angefangen. Und wenn ich mich nun richtig erinnere, hab ich dann die Datei nicht verschoben, sondern den Code in eine neue kopiert... Daran muss es also gelegen haben.
 
Übrigens: wen es interessiert, wie man bei einer E-Mail-Adresse NUR die Maildomain extrahiert - ich habe nun einen viel kürzeren und einfacheren Weg gefunden, nämlich:

PHP:
$email = "Empfänger@example.com"
$maildomain = substr($email, strrpos($email, '@'));
//Ausgabe: "@example.com"
 
Das gilt aber nur für einen Teil der E-Mails. Schau dir mal Intranet Adressen bei Lotus Notes an!
Der Regex für E-Mails ist weitaus komplizierter.
 
Das gilt aber nur für einen Teil der E-Mails. Schau dir mal Intranet Adressen bei Lotus Notes an!
Der Regex für E-Mails ist weitaus komplizierter.

Das stimmt natürlich, dafür bräuchte man etwas à la preg_replace...
Allerdings beschränkt sich das bei mir auf "normale" Adressen, die auf einer Website für die Registrierung genutzt werden sollen.
 
Zurück
Oben