PHP trim und space funktioniert nicht

7

Ich habe einige Daten von einem CSV importiert. Das Import-Skript erfasst alle E-Mail-Adressen im CSV und importiert sie nach der Validierung in eine Datenbank.

Ein Client hat diesen csv bereitgestellt, und einige der E-Mails scheinen am Ende der Zelle Platz zu haben. Kein Problem, schneiden Sie diesen Sauger ab ... nein, wird nicht funktionieren.

Der Space scheint kein Leerzeichen zu sein und wird nicht entfernt, so dass einige E-Mails nicht validiert werden können.

Frage: Irgendwie kann ich tatsächlich erkennen, was dieser fehlerhafte Charakter ist und wie ich ihn entfernen kann?

Ich bin mir nicht sicher, ob es irgendeine funkige Kodierung oder etwas anderes gibt, aber ich möchte sie nicht manuell durchgehen und entfernen! Wenn I UTF-8 die Zeichenfolge zuerst codiert, zeigt es dieses Zeichen als a:

  

    
Horse 18.08.2013, 14:04
quelle

4 Antworten

19

Wenn dieser "Raum" nicht von trim() beeinflusst wird, muss er zuerst identifiziert werden.

Verwenden Sie urlencode() für die Zeichenfolge. Urlencode entkernt nicht-druckbare und viele druckbare Zeichen neben ASCII, so dass Sie sofort den Hexcode der betreffenden Zeichen sehen. Je nachdem, was Sie entdecken, können Sie entsprechend handeln oder Ihre Frage aktualisieren, um weitere Hilfe zu erhalten.

    
Sven 18.08.2013, 14:56
quelle
2

Ich hatte ein ähnliches Problem, indem ich auch E-Mails von CSVs löste und Probleme mit "nicht erkennbaren" Leerzeichen hatte.

Es wurde gelöst, indem die häufigsten urlencodierten Leerzeichen durch '' ersetzt wurden. Dies kann hilfreich sein, wenn mb_detect_encoding () und / oder iconv ()

nicht verwendet werden können %Vor%

Beachten Sie, dass dies das "normale" Leerzeichen nicht entfernt und dass es diese Leerzeichen an einer beliebigen Stelle in der Zeichenkette entfernt - nicht nur am Anfang oder am Ende.

    
Rid Iculous 19.01.2016 02:03
quelle
0

Ich sehe Paare von möglichen Lösungen

1) Erhalte das letzte Zeichen einer Zeichenkette in PHP und überprüfe, ob es ein normales Zeichen ist (zB mit regexp). Wenn es kein normales Zeichen ist, dann entferne es.

%Vor%

2) Konvertiere deinen Charakter von UTF-8 in die Kodierung deiner CSV-Datei und benutze str_replace. Zum Beispiel, wenn Sie CSV in ISO-8859-2 codiert ist

%Vor%     
Mateusz Nowak 18.08.2013 14:14
quelle
0

In den meisten Fällen wird ein einfaches strip_tags($string) funktionieren.

Falls das obige nicht funktioniert, sollten Sie versuchen, die Zeichen zu identifizieren, die auf urlencode() zurückgreifen, und dann entsprechend handeln.

    
Slipstream 10.11.2014 11:48
quelle

Tags und Links