SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.05.2017, 17:56:44
basementmedia basementmedia ist offline
Anfänger
 
Registriert seit: Feb 2015
Alter: 45
Beiträge: 11
Seltsames Codierungsproblem

Hi Zusammen,

ich habe ein Skript, das eine XML-Datei (die in UTF-8 codiert ist) ausliest und einen bestimmten Inhalt davon in einen Array (im Folgenden Array 1 genannt) schreibt. Im Code ist Array 1 "$meldungenliste_xml"

Code:
        $auswirkungen=simplexml_load_file($xml_datei);
	$result = $auswirkungen->xpath('/root/section-body/table/tr/td');
	foreach ($result as $td) {
		switch((string) $td[0]->block['style']) { // Verwende Attribute als Element-Indizes
			case 'Alarm-Nummer':
				$code=$td[0]->block;
				// Code in Array aufnehmen
				$meldung_open=true;
				break;
			case '':
				break;
			}
		// Auswirkungen ausgeben
		if ($meldung_open) {
			switch((string) $td[0]->block['style']) { // Verwende Attribute als Element-Indizes
			case 'Alarm-Meldung':
				$meldung=$td[0]->block;
				break;
			case '':
				break;
			}	
			switch((string) $td[0]->{'list'}['style']) { // Verwende Attribute als Element-Indizes
			case 'Alarm-Auswirkungen':
				foreach ($td[0]->{'list'}->listitem as $auswirkung) {
					$auswirkungen=$auswirkungen.$auswirkung[0].";";
					// Auswirkung in Xtra-Array schreiben
					if (!in_array((string)$auswirkung[0],$auswirkungen_xml)) {
						array_push($auswirkungen_xml, trim((string)$auswirkung[0]));
					}
				}
				$auswirkungen=substr($auswirkungen, 0, -1);
				// Alle Auswirkungen wurden eingelesen, d.h. die Meldung kann geschlossen werden....
				$meldung_open=false;
				array_push($meldungenliste_xml, array('code' => (string)$code, 'meldung' => (string)$meldung, 'auswirkungen' => trim((string)$auswirkungen), 'kombi' => (string)$code." ".(string)$meldung));
				$auswirkungen="";
				break;
			case '':
				break;
			}	
		}
Über Array 1 lasse ich anschließend serialize() und base64_encode drüber laufen und schicke ihn über ein hidden-Feld per POST (Formular) an einen andere Seite.

Dort wandle ich ihn per unserialize und base64_decode wieder einen Array zurück.
Funktioniert soweit wunderbar. Der Array 1 sieht wieder ganz genau so aus.

Nun durchlaufe ich Array 1 per foreach und übergebe einen bestimmten String davon an eine andere Funktion, in der dieser wiederum in einen Session-Array geschrieben wird (im folgenden Array 2 genannt).

Den Sinn des ganzen zu erklären würde an dieser Stelle den Rahmen sprengen.

Nun kommt jedenfalls das seltsame:
Eine weitere Funktion vergleicht die Strings aus Array 1 und 2 wieder miteinander und prüft ob diese identisch sind (was ja so sein sollte, da Array 2 ja aus Array 1 aufgebaut wird). Bei allen Strings ohne Umlaute werden diese als identisch erkannt.
Sobald aber ein Umlaut in einem String drin ist, werden die beiden eigentlich gleichen Strings nicht mehr als gleich erkannt, obwohl sie im Browser noch genau gleich aussehen!

Meine Funktion prüft quasi z.B. den String 'Überdruck Ventil 1' aus Array 1 mit dem String 'Überdruck Ventil 1' aus Array 2 und gibt dann aus:
'Überdruck Ventil 1' ist nicht gleich 'Überdruck Ventil 1'

Es scheint so als ob die Texte unterschiedlich codiert sind und nur scheinbar gleich aussehen.

Hat jemand eine Idee, wie ich dem Fehler auf die Schliche kommen könnte?

Sorry, klingt total verwirrend - zugegebenermaßen.
Macht in meinem Skript aber Sinn.
Mit Zitat antworten
  #2  
Alt 18.05.2017, 12:50:21
sysop sysop ist offline
Member
 
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
AW: Seltsames Codierungsproblem

Auf die schnelle würde mir etwas wie htmlspecialchars oder real_escape_string einfallen.

htmlspecialchars() wäre eine Variante, wo du vor dem Vergleich beide Strings durchschicken könntest. also eine Prüfung ala

PHP-Code:
if(htmlspecialchars($String1) == htmlspecialchars($String2)) 
Liesse sich so garnichts finden, würde ich die Strings in ihre einzelnen Zeichen zerlegen und die ASCII-Codes vergleichen
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
Mit Zitat antworten
Antwort

Stichworte
kodierung, xpath


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Seltsames Problem mit php.ini -> upload_max_filesize furianerr Apache HTTP-Server 9 17.08.2007 16:33:31
seltsames Problem N'Koto Zinde PHP für Fortgeschrittene und Experten 18 22.02.2007 12:10:33
Seltsames Javascript im Quellcode chriscolm Off Topic Area 5 22.05.2006 19:49:26
seltsames verhalten feuervogel PHP für Fortgeschrittene und Experten 10 31.01.2006 10:26:35
Seltsames Problem, das nur indirekt mit PHP zu tun hat Hiyanha PHP Grundlagen 7 30.06.2002 12:04:24


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:35:27 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt