str_replace-Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • str_replace-Problem

    Hallo, ich möchte mit str_replace folgenden Ausdruck entfernen


    (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

  • #2
    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.
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


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

      Kommentar


      • #4
        str_replace

        Zitat von TobiaZ Beitrag anzeigen
        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

        Kommentar


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

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

          Kommentar


          • #6
            str_replace

            Zitat von h3ll Beitrag anzeigen
            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.

            Kommentar


            • #7
              Geschafft

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

              Danke

              Kommentar


              • #8
                Zitat von newbie1955 Beitrag anzeigen
                ...habs jetzt doch mit viel UTF-8 de- und encode hingekriegt
                Würdest du richtig mit Zeichensätzen umgehen, müsstest du nichts herumkodieren.

                Kommentar


                • #9
                  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 [FONT=Lucida Sans Unicode], das nicht korrekt ausgegeben wird. Ich habe es so versucht:

                  [/FONT]
                  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

                  Kommentar


                  • #10
                    Immer noch gleiche Baustelle – *zusammenführ*
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      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 [FONT=Lucida Sans Unicode]"& # 2 8 7 ;[/FONT][FONT=Lucida Sans Unicode]" und [/FONT][FONT=Lucida Sans Unicode][/FONT][FONT=Lucida Sans Unicode]"& # 2 8 6 ;" [/FONT][FONT=Lucida Sans Unicode]verbirgt.

                      also mit str_replace komme ich so nicht weiter.
                      Gruß
                      newbie1955
                      [/FONT]

                      Kommentar


                      • #12
                        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).

                        Kommentar


                        • #13
                          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.
                          Zuletzt geändert von newbie1955; 11.01.2013, 09:12.

                          Kommentar


                          • #14
                            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.

                            Kommentar


                            • #15
                              Zitat von newbie1955 Beitrag anzeigen
                              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 von newbie1955 Beitrag anzeigen
                              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.
                              Zuletzt geändert von h3ll; 11.01.2013, 17:25.

                              Kommentar

                              Lädt...
                              X