php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.07.2010, 18:04  
Benutzer
 
Registriert seit: 25.05.2009
Beiträge: 80
omex zeigte ein beschämendes Verhalten in der Vergangenheit
Standard [Erledigt] Utf-8 preg_replace mal gehts mal nicht

Lol, stehe gegen Feierabend vor nem Problem .

Beim ersten Code wird das Sonderzeichen Ü ersetzt, beim 2ten aber nicht. Wo liegt den da der Unterschied? Die Seite wird doch nur geholt und müsste doch das gleiche Verfahren sein.

Code:

PHP-Code:
<?php

$content 
file_get_contents('http://weinschreiber.de/index.php/impressum/');

$content preg_replace('@Ü@sui','ae'$content);



?>
PHP-Code:
<?php

$content 
file_get_contents('http://clickeffect.de');

$content preg_replace('@Ü@sui','ae'$content);



?>
omex ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.07.2010, 18:06  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Nein, dein zweiter Code „holt“ nicht die Seite, zumindest nicht die, die du wohl beabsichtigst - sondern der Request wird vom Server nur mit einem Redirect-Header beantwortet (plus kurzes Dokument, das diesen Umstand beschreibt), und file_get_contents hat überhaupt keine Lust, diesem ohne weiteres automatisch zu folgen.

Vermutlich meinst du eigentlich die Adresse http://clickeffect.de/
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?

Geändert von ChrisB (22.07.2010 um 18:12 Uhr).
ChrisB ist offline  
Alt 22.07.2010, 20:00  
Benutzer
 
Registriert seit: 25.05.2009
Beiträge: 80
omex zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

em ich habe bei beiden inhalt, sehe den inhalt in der content variabel, beim debbugen. doch leider ersetzt er die sonderzeichen bei den gleichen einstellungen nicht für den obigen code und weis leider nicht wieso.
omex ist offline  
Alt 22.07.2010, 21:03  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Dann hat Website A eine andere Kodierung als Website B.
In diesem Fall hat aso Website A die gleiche Kodierung wie dein Script, Website B aber eine andere. Deshalb kann ein Ü in Website B von deinem Script nicht als Ü erkannt werden.
__________________
Frank ist offline  
Alt 22.07.2010, 21:12  
Benutzer
 
Registriert seit: 25.05.2009
Beiträge: 80
omex zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

ok vielen dank frank, damit kann ich etwas anfangen. wie erkennt php bitte den charset? ist der nicht immer gleich meines scriptes? wird das anhand des responde -> request verfahren automatisch gesetzt? kann man das irgendwie zwischen schalten, das man inhalt immer in einem zeichensatz bekomme
omex ist offline  
Alt 22.07.2010, 21:28  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

PHP: mb_detect_encoding - Manual
PHP: iconv - Manual

Fuer dein Vorhaben reicht auch str_replace.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 23.07.2010, 10:40  
Benutzer
 
Registriert seit: 25.05.2009
Beiträge: 80
omex zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hi, danke für die Hilfe, bin dennoch am verzweifeln. Es will einfach nicht in meinen Schädel rein, wieso es nicht fuktioniert.

Folgendes:

PHP-Code:
$content file_get_contents('http://weinschreiber.de');

echo 
mb_detect_encoding($content);


echo 
$content preg_replace('@Ü@sui','ae'$content); 
Habe als Beispiel die Seiten clickeffect.de und weinschreiber.de, beide sind nach der Aussage von "mb_detect_encoding" UTF-8 codiert, also sollten doch beide im preg_relace die gleichen Vorraussetzungen haben für das Ändern.

Leider aber ersetzt er mir mir weinschreiber.de zum Teufel nicht die Sonderzeichen. Will es nur testen, aber verstehe nicht wieso er es nicht macht.
omex ist offline  
Alt 23.07.2010, 15:11  
Benutzer
 
Registriert seit: 25.05.2009
Beiträge: 80
omex zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hi, also ich habe es folgendermaßen geschafft:
PHP-Code:
$content file_get_contents('http://weinschreiber.de');

echo 
$charset mb_detect_encoding($content);
$content iconv($charset'UTF-8'$content);

echo 
$content preg_replace('@Ü@sui','ae'$content); 
Meine Frage:

Wieso muss ich den Charset mit Iconv nochmal extra setzen? mb_detect_encoding sagt doch schon es ist utf-8. ohne inconv funzt es nicht...
omex ist offline  
Alt 24.07.2010, 02:06  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von omex Beitrag anzeigen
Wieso muss ich den Charset mit Iconv nochmal extra setzen? mb_detect_encoding sagt doch schon es ist utf-8. ohne inconv funzt es nicht...
Ich vemute mal, dass sich die Website als UTF8 ausgibt, obwohl Sie entweder gar nicht UTF-8 ist oder an irgendeiner Stelle nicht UTF8 ist.

Da es einen Bug in mb_detect_encoding gibt, kann es durchaus sein, dass UTF8 ausgegeben wird, obwohl es gar nicht stimmt.

Mit deinem iconv erzwingst du in jedem Fall einfach UTF8, womit das Ersetzen klappt.

[Das waren jetzt aber alles nur Annahmen ^^]
__________________
Frank ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
str_replace utf-8, php str_replace utf-8, preg_replace utf-8, str_replace utf 8, preg_replace ü, str_replace php utf8, php utf8 str_replace, utf-8 str_replace php, utf8 str_replace, utf-8 str_replace, str_replace utf8 php, php preg_replace content, mb_detect_encoding file_get_contents, str_replace uft-8, php str_replace utf8, php erkennt umlaut nicht, preg_replace utf8, php preg_replace utf-8, http://www.php.de/php-einsteiger/69961-erledigt-utf-8-preg_replace-mal-gehts-mal-nicht.html, warum geht str_replace nicht mehr mit utf8

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum