PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   str_replace-Problem (https://www.php-resource.de/forum/php-developer-forum/103662-str_replace-problem.html)

newbie1955 02-01-2013 17:13

str_replace-Problem
 
Hallo, ich möchte mit str_replace folgenden Ausdruck entfernen


Zitat:

(für Abonnenten)
Meine bisherigen Versuche klappen aber nicht, obwohl ich "Abonnenten" separat wegbekomme.

PHP-Code:

$title str_replace("(für Abonnenten)"""$title); 

Aber vermutlich liegt es an den Sonderzeichen, aber auch meine Versuche, die entsprechend zu kodieren helfen nicht.
PHP-Code:

$title str_replace("&#40für Abonnenten)"""$title); 

Jemand eine Idee?

Gruß
newbie1955

Quetschi 02-01-2013 17:26

Gib den zu bearbeitenden String einfach mal aus und sieh dir in der Quelltextanzeige an, ob er mit htmlentities oder ähnlichem daherkommt. Ansonsten bleiben deine Versuche reines Rätselraten.

TobiaZ 02-01-2013 19:28

Welche Codierung hat der zu bearbeitende String und als was (Codierung) speicherts du deine Datei?

newbie1955 02-01-2013 19:46

str_replace
 
Zitat:

Zitat von TobiaZ (Beitrag 664426)
Welche Codierung hat der zu bearbeitende String und als was (Codierung) speicherts du deine Datei?

Es ist ein rss-feed, der in "iso-8859-1" codiert ist, ich gebe ihn in utf-8 aus. ('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

Quelltext des feeds sieht so aus:

[CODE<title>CDU-Abgeordnete am B�rgertelefon (f�r Abonnenten)</title>][/CODE]

Ich habe es ja mit "(f&uuml;r Abonnenten)" versucht. Aber erfolglos.

Gruß und Dank
newbie1955

h3ll 02-01-2013 19:52

str_replace() ist das falsche Werkzeug, wenn du ein Zeichensatzproblem beheben willst.

http://www.php-resource.de/forum/htm...-probleme.html

newbie1955 02-01-2013 20:45

str_replace
 
Zitat:

Zitat von h3ll (Beitrag 664430)
str_replace() ist das falsche Werkzeug, wenn du ein Zeichensatzproblem beheben willst.

http://www.php-resource.de/forum/htm...-probleme.html


wollte ich ja gar nicht, ich wollte einen Teilstring entfernen, der ein Sonderzeichen enthält.

newbie1955 02-01-2013 21:14

Geschafft
 
...habs jetzt doch mit viel UTF-8 de- und encode hingekriegt

Danke

h3ll 02-01-2013 22:00

Zitat:

Zitat von newbie1955 (Beitrag 664433)
...habs jetzt doch mit viel UTF-8 de- und encode hingekriegt

Würdest du richtig mit Zeichensätzen umgehen, müsstest du nichts herumkodieren.

newbie1955 10-01-2013 14:46

Türkisches G als Sonderzeichen ersetzen
 
Hallo, ich lese den feed einer türkischen Zeitung ein. Die Seite ist in utf-8 codiert und wird auch so ausgegeben. Leider habe ich Probleme mit dem türkischen , das nicht korrekt ausgegeben wird. Ich habe es so versucht:

PHP-Code:

$doc str_replace"ğ""ğ"$doc);
$doc str_replace"Ğ ""Ğ"$doc); 

Offenbar falsch, denn es funktioniert nicht, ausgegeben wird nun gar nichts mehr.

Hat jemand einen Tipp?

Gruß
newbie1955

wahsaga 10-01-2013 15:12

Immer noch gleiche Baustelle – *zusammenführ*

newbie1955 10-01-2013 16:23

Türkische g
 
ja, klar, hat auch mit Sonderzeichen zu tun. Aber alle anderen Sonderzeichen werden ja korrekt dargestellt, deshalb ist das hier ein neues Problem.

In der Code-Darstellung hier wird es auch nicht richtig angezeigt, also utf-8 bringt alles richtig, nur das türkische g nicht, dass sich hinter der Maskierung "& # 2 8 7 ;" und "& # 2 8 6 ;" verbirgt.

also mit str_replace komme ich so nicht weiter.
Gruß
newbie1955

h3ll 10-01-2013 21:20

Das sind HTML-Entities. Da musst du nichts mehr herumkodieren, die kannst du so direkt an den Browser ausgeben und der versteht das auch (wie du hier im Forum selber festgestellt hast).

newbie1955 11-01-2013 09:38

Abfrage
 
Ja, wie ich dieses Zeichen als HTML-Entity ausgebe, weiß ich. ich will wissen, was ich als zu suchenden bzw. ersetzenden Wert bei str_replace eingeben muss, damit das nicht korrekt dargestellte Zeichen ersetzt wird. Ausgegeben wird dieses ğ in meinen Browsern als Ä. Ich kann ja aber nicht nach Ä suchen und alle Äs als ğ ausgeben, denn ich brauche ja evtl. auch mal ein Ä.

Gruß
newbie1955

Sehe jetzt, dass offenbar auch andere türkische Sonderzeichen nicht korrekt ausgegeben werden.

Melewo 11-01-2013 13:57

Viele, wenn nicht die meisten Probleme entstehen allein dadurch, dass HTML-Dokumente nur mit einer Zeichenkodierung ausgezeichnet aber nicht unter dieser Zeichenkodierung gespeichert werden. Also, nur weil Du charset=UTF-8 schreibst, ist das Dokument noch lange kein UTF-8, insofern ein Editor unter Iso oder Ansi speichert.

Im FF sehe ich jetzt kein Türkisch oder bin etwas blind, doch im IE kann ich unter Ansicht -> Codierung -> mehr -> Türkisch wählen. Dann siehst Du schon einmal, ob sich etwas zum Leserlichen wandelt. Falls ja, wurde das Dokument vom Editor vermutlich nicht mit UTF-8 gespeichert oder wie auch immer. Falls nein, auch doppelte Codierungen bereiten zuweilen Probleme, was dann zur Ausgabe von Fragezeichen oder so führen kann.

Mit dem Türkischen kenne ich mich nicht aus, doch für Umlaute gibt es neben den UTF-8 Entsprechungen und HTML-Entities auch noch Hieroglyphen (weiß jetzt nicht, wie die richtig bezeichnet werden), für alles gibt es Listen, in denen diese Entsprechungen zu finden sind.

Ein Beispiel: Diakritische Zeichen - Trkisch Unicode

Wobei zu beachten ist, dass zum Beispiel 00C7 auch als 00c7 Verwendung finden könnte und somit nach beiden Schreibweisen gesucht werden sollte. Was ich in dieser Liste noch vermisse, das sind halt diese Hieroglyphen wie Ä und ä für ein großes und kleines deutsches Ä und ä.

Am einfachsten kommst Du dann weg, wenn Du eine Funktion erstellst, die alle Entsprechungen enthält und umwandelt.

h3ll 11-01-2013 18:20

Zitat:

Zitat von newbie1955 (Beitrag 664627)
Ja, wie ich dieses Zeichen als HTML-Entity ausgebe, weiß ich. ich will wissen, was ich als zu suchenden bzw. ersetzenden Wert bei str_replace eingeben muss, damit das nicht korrekt dargestellte Zeichen ersetzt wird.

Gar nicht. Du solltest herausfinden, warum es nicht korrekt dargestellt wird. Erster Schritt wäre zum Beispiel die HTML-Ausgabe zu analysieren, ob die überhaupt korrekt ist und wenn nicht, was genau nicht korrekt ist.

Zitat:

Zitat von newbie1955 (Beitrag 664627)
Ausgegeben wird dieses ğ in meinen Browsern als Ä.

Dann ist dein Browser kaputt, oder du machst die Ausgabe kaputt. HTML-Entities sind eindeutig und werden immer als das gleiche Zeichen ausgegeben.


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:55 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG