PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : preg_match_all local und online wird unterschiedlich ausgewertet


saidbuchari
02.07.2009, 14:32:00
hay alle zusammen. ich ml wieder mit wahrscheinlich ner kleinigkeit.

ich teste folgenden preg_match local mit Wamp und matcht die abfrage auf den string lad ich die seite dann aber hoch matcht er nicht woran liegt das? Jemand mal ähnliches Problem gehabt?



$s2 = "1,4,5:König";
if (preg_match_all('/^([\d{1,3},]+):[^\d][+-|\"|\w*|\" ]+$/miu', $s2, $wert) && $treffer != true){
.... bla bla
}

Habe einen Strato V Server. Muss ich was in der PHP ini verändern?
Dieses Problem besteht übrigens nur wenn Wörter mit Umlauten hinter dem DOppelpunkt stehen. es scheint so als wenn mein Server bei STrato das anders auswertet als offline.


Liebe Grüsse
Said

Indyk
02.07.2009, 14:53:14
verwendest du offline und online verschiedene zeichensätze? z.B. mal latin1 und mal utf8?

saidbuchari
02.07.2009, 14:55:05
eigentlich nicht header ist immer jeweils UTf8 online wie auch offline via header("Content-Type: text/html;UTF-8");
in jeder Seite ganz oben

muss ich vielleicht in der PHP ini auf dem Server irgendwie auf UTF8 umstellen? ich mein local hab ich das nciht gemacht. hab nur wamp installiert und arbeite damit

Indyk
02.07.2009, 14:59:08
Ist die Datei selbst denn als UTF8 abgespeichert? woher kommt $s2 wenn du es nicht per hand füllst?

saidbuchari
02.07.2009, 15:11:17
ja die dateien sind als utf8 gespeichert sprich in dreamweaver mit seitenseinstellungen und das Häckchen bei BOM Signatur einschliessen ist auch aktiviert.

$s2 ist in dem Fall ja einfach ein string der definiert wird von mir da ich die ganzen verschiedenen abfragen erstmal teste. sprich $s2 steht so über der abfrage in der datei die ich direkt aufrufe. $s2 = "1,4,5:König"; // Dann die abfrage

local matcht er online matcht er nicht. ich vergleiche gerade die php einstellungen über phpinfo();

saidbuchari
02.07.2009, 15:14:23
hab online schonmal ne andere PHP version und zwar Version 5.1.2 und offline Version 5.2.7


Apache Environment
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7

HTTP Headers Information
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7

PHP Variables
_SERVER["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.7

sind bei beiden gleich

saidbuchari
02.07.2009, 15:50:30
mh kann da online nix entdecken was anders ist als local. noch jemand ideen woran es liegen könnte?

cortex
02.07.2009, 15:52:48
zeig mal einen beispiel-string und die jeweiligen ergebnisse.

cx

saidbuchari
02.07.2009, 19:43:43
ok ich poste mal den kompletten code der testseite


<?php
header("Content-Type: text/html;UTF-8");
$treffer = false;
$s2 = "1,4,5:König";
# Nur suchwörter sollen gesucht werden ohne minus plus oder Zahlen am Beginn der Zeichenkett
# Funktioniert schonmal !!
if (preg_match_all("/^[^\d-|+][^\d]+/miu", $s2, $wert) && $treffer == false){
echo "Wortstring1<br>";
print_r($wert);
$treffer = true;
}else{
echo "nicht lesbar<br>";
print_r($wert);
echo "<br>";
$treffer = false;
}
# Suchwörter beginnend mit - oder +
# Funktioniert schonmal !!
if (preg_match_all("/^[-|+][^\d]+/miu", $s2, $wert) && $treffer != true){
echo "Wortstring2<br>";
print_r($wert);
$treffer = true;
}else{
echo "nicht lesbar<br>";
print_r($wert);
echo "<br>";
$treffer = false;
}
# Beginnend mit Kapiteln dann suchwort
# Funktioniert schonmal !!
if (preg_match_all('/^([\d{1,3},]+):[^\d][+-|\"|\w*|\" ]+$/miu', $s2, $wert) && $treffer != true){
echo "beginnt mit Zahl <br>";
print_r($wert);
echo "<br>";
$treffer = true;
}else{
echo "nicht lesbar";
echo "<br>";
print_r($wert);
echo "<br>";
$treffer = false;
}
# Beginnend mit kapiteln von bis und dann suchwort
# Funktioniert schonmal !!
if (preg_match_all('/^([\d\{1,3\}\-\d\{1,3\}]+):[^\d][+-|\"\w*|\" ]+$/miu', $s2, $wert) && $treffer != true){
echo "Sure Von bis<br>";
print_r($wert);
$treffer = true;
}else{
echo "nicht lesbar<br>";
print_r($wert);
echo "<br>";
$treffer = false;
}

if (preg_match_all("/^[^,.+-\s][\d+,]+$/mi", $s2, $wert) && $treffer != true){
echo "beginnt mit Zahl <br>";
print_r($wert);
$treffer = true;
}else{
echo "nicht lesbar<br>";
print_r($wert);
echo "<br>";
$treffer = false;
}
?>



local gibt er mir folgendes aus


nicht lesbar
Array ( [0] => Array ( ) )
nicht lesbar
Array ( [0] => Array ( ) )
beginnt mit Zahl
Array ( [0] => Array ( [0] => 1,4,5:König ) [1] => Array ( [0] => 1,4,5 ) )
nicht lesbar
Array ( [0] => Array ( [0] => 1,4,5:König ) [1] => Array ( [0] => 1,4,5 ) )
nicht lesbar
Array ( [0] => Array ( ) )

online folgendes


nicht lesbar
Array ( [0] => Array ( ) )
nicht lesbar
Array ( [0] => Array ( ) )
nicht lesbar
Array ( [0] => Array ( ) [1] => Array ( ) )
nicht lesbar
Array ( [0] => Array ( ) [1] => Array ( ) )
nicht lesbar
Array ( [0] => Array ( ) )


der beispielstring war in diesem fall

1,4,5:König

Hoffe das ist verständlich

Indyk
03.07.2009, 10:03:28
selbes verhalten bei mir wenn ich local und online teste.

saidbuchari
04.07.2009, 12:33:39
mh das ist echt kurios.
ich hab so das gefühl das ist irgend eine einstellung in der php ini oder halt in der conf von apache? kann das sein? welche version hast du online wenn ich fragen darf? hab angst online eine neue PHP version zu updaten da ich das noch nie gemacht habe und bis jetzt noch nicht nötig war. Kann es daran liegen das ich online nur PHP version 5.1.2 habe und local mit 5.2.7 arbeite?

Wäre echt dankbar da das für ein aktuelles Projekt ein echtes Problem sein wird wo ich nelösung für finden muss.