substr funktioniert nicht

Alles, was PHP betrifft, kann hier besprochen werden.

substr funktioniert nicht

Postby mkuebler » 22. July 2008 16:41

Hallo zusammen,

habe wirklich ein ganz eigenartiges Problem.

Ich habe 2 XAMPP am laufen in der Version 1.6.6a
1. Auf WinXP = Entwicklung
2. Auf Win Server 2003 = Produktiv

Auf meiner Entwicklungsmaschiene passt alles, aber auf dem Produktivserver hab ich das Prolbem, dass die substr-Funktion in php nicht richtig funktioniert.
Beispiel letztes Zeichen entfernen mit
substr($text,0,strlen($text)-1)
funktioniert einmal und einmal wieder nicht.

Wo es noch auftritt ist in der FPDF Klasse in der Funktion MultiCell. Hier wird ebenfalls die Funktion sehr oft benutzt um z.B. einen Zeilenumbruch zu machen.

Hat irgendjemand eine Idee / Lösung dasselbe Problem.
Ein Update auf PHP 5.2.6 mit dem neuen XAMPP wäre wirklich die letzte Lösung, das könnte ich aber erst nachts machen, da es ja Produktivsystem ist.

Danke schon mal im Voraus.

Gruß
Matze
mkuebler
 
Posts: 5
Joined: 22. July 2008 16:29

Postby Xardas der Dunkle » 22. July 2008 17:09

Code: Select all
substr($text,0,strlen($text)-1)

Wieso so kompliziert?^^

Code: Select all
substr($text, 0, -1)

<3

Zum Problem. Handelt es sich bei dem Text um utf8-codierten Text? Da kann es nämlich Probleme geben: http://www.phpwact.org/php/i18n/utf-8
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby mkuebler » 23. July 2008 08:43

Ich konnte den Fehler jetzt eingrenzen und es liegt tatsächlich am strlen und nicht wie gedacht am substr!!!!

Vielen Dank für den Tipp.

Doch leider ruft FPDF auch sehr oft strlen auf und auch mit mb_strlen bekomm ich nicht das gewünschte Ergebnis.

Mein Vorgehen ist folgendes:
1. Ich hol mir die Sachen aus der MySQL Datenbank
2. Bastle mir einen ganzen String daraus ($Firma."\n".$Strasse."\n".$plz." ".$ort)
3. Konvertiere es in ISO-8859-1 mit uft8_decode
4. Übergeb es der FPDF Funktion MultiCell und der macht mir aus
Firmenname
Musterstraße 1
10001 Musterstadt

-->

Firmenname
Musterstraße 1
0001 Musterstadt

Ich möchte eigentlich FPDF nicht anpassen, sondern eher dann die Serverumgebung.

Merkwürdigerweise habe ich auf unserem Testserver mit Windows Server 2003 64 Bit oder meiner Windows XP Maschiene kein Problem aber auf dem Produktivserver mit Windows Server 2003 64 Bit.

Da muss es noch irgendeine globale Einstellung geben!?!?!

Gruß
Matze
mkuebler
 
Posts: 5
Joined: 22. July 2008 16:29

Postby Nobbie » 23. July 2008 10:12

>Da muss es noch irgendeine globale Einstellung geben!?!?!

Wofür?

Ich (und andere sicherlich auch nicht) kann immer noch nicht erkennen, welcher Fehler an welcher Stelle auftreten soll.
Nobbie
 
Posts: 13182
Joined: 09. March 2008 13:04

Postby mkuebler » 23. July 2008 10:46

1. Ich konnte es soweit eingrenzen, dass der Fehler auftaucht, wenn ich strlen() benutze. Und das auch nur bei UTF8 Strings, die Umlaute und ß enthalten.
Und da ich 2 Server mit gleichen Betriebssystemen benutze und der Fehler nur auf einem auftaucht, dachte ich, evtl. gibts irgendwie eine Einstellung im Windows (z.B. Spracheinstellung o.ä.), was sich auf das PHP auswirkt.

2. Ich habe nun doch das PHP upgedatet auf 5.2.6 und nun taucht der Fehler auch nicht mehr auf. Also interessant wäre natürlich trotzdem, an was es gelegen hat!
mkuebler
 
Posts: 5
Joined: 22. July 2008 16:29

Postby guw » 23. July 2008 10:49

mkuebler wrote:4. Übergeb es der FPDF Funktion MultiCell und der macht mir aus
Firmenname
Musterstraße 1
10001 Musterstadt

-->

Firmenname
Musterstraße 1
0001 Musterstadt
Verschwindet die verlorene 1 auch, wenn die Justierung als rechtsbuendig verlangt wird?

Da Du sowieso eine Verkettung aus den einzelnen Daten erstellst koenntest Du ja auch einen Leerplatz zusaetzlich einbauen, oder?
guw
 
Posts: 15
Joined: 22. July 2008 10:49

Postby sari42 » 23. July 2008 17:35

>Und das auch nur bei UTF8 Strings, die Umlaute und ß enthalten.
ist denn mbstring aktiv?
phpinfo() erzählt es Dir.
sari42
 
Posts: 800
Joined: 27. November 2005 18:28

Postby mkuebler » 23. July 2008 17:47

Ja ist enabled!
mkuebler
 
Posts: 5
Joined: 22. July 2008 16:29

Postby sari42 » 23. July 2008 23:21

sari42
 
Posts: 800
Joined: 27. November 2005 18:28

Postby mkuebler » 29. July 2008 10:36

mb-strlen hab ich schon probiert, hat aber keine Änderung gebracht.

Also hier hab ich mal ein Beispiel was mein Problem mit der PDF Generierung (FPDF) ist.

Beim Öffnen wird meines Skriptes wird folgendes angezeigt

---------------- Beispiel Anfang falsch ---------------
Bestellung bei:

Musterfirma GmbH & Co. KG
Frau Mustermann
Musterstraße 9
2345 Musterstadt


Liefern Sie bitte an folgende Adresse:

Mustermann und Söhne Be
spielstr. 3 5

21 Musterhausen
---------------- Beispiel Ende falsch ---------------

Nach dem Neustart des Apaches funktioniert es wieder, aber nur kurzzeitig:


---------------- Beispiel Anfang richtig ---------------
Bestellung bei:

Musterfirma GmbH & Co. KG
Frau Mustermann
Musterstraße 9
12345 Musterstadt


Liefern Sie bitte an folgende Adresse:

Mustermann und Söhne
Beispielstr. 3

54321 Musterhausen
---------------- Beispiel Ende richtig ---------------

Die Adressen sind in einem String getrennt durch \n gespeichert. Dies Übergeb ich der FPDF Funktion MultiCell, der daraus mit substr die einzelnen Bestandteile rausextrahiert und mit strlen nachschaut, ob noch ein Umbruch gemacht werden soll.

Da dies natürlich auf einem Live-Server passiert und nicht auf einem Testrechner ist die Lösung wirklich dringend.

Gruß
Matze
mkuebler
 
Posts: 5
Joined: 22. July 2008 16:29


Return to PHP

Who is online

Users browsing this forum: No registered users and 54 guests