Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Strings in dynamischem Content ersetzen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Strings in dynamischem Content ersetzen

    Hallo ihr.

    Ich habe mir schon das preg_replace Manual, sowie dutzende Threads hier zu dem Thema durchgelesen, bin aber noch nicht auf eine Lösung gekommen.

    Es geht darum innerhalb dieses div

    <div class="postsingle"> </div>

    alles zu durchsuchen und die Zahlen 400 zu 600, sowie 225 zu 300 zu ersetzen.

    Wie macht man das?


    Einen lieben Gruß,
    *su

  • #2
    Ja, ja, diese regulären Ausdrücke können einen schon schnell überfordern. Ich benutze die so selten, dass ich jedesmal das wenige, was ich verstanden habe, auch schon wieder vergessen habe. Es müssen aber nicht immer die regulären Ausdrücke sein.
    Wenn Du statt dessen str_replace benutzt, also einmal für 400 zu 600 und noch einmal für 225 zu 300, rümpft der Hardcore-Programmer zwar die Nase, Du kannst Dir aber 'ne Menge Zeit sparen und dem User ist das eh egal.

    Kommentar


    • #3
      Danke schon einmal für den Tipp. Aber auch da stehe ich vor bömischen Dörfern.

      Hast Du nicht ein wenig Code für mich? Ich komm ja nicht mal auf einen Ansatz.

      Kommentar


      • #4
        Also ne, lese doch mal folgendes:PHP: str_replace - Manual

        Kommentar


        • #5
          Habe ich.

          Müsste das:

          PHP-Code:
          <?php function austausch($input)
          {
            
          $alt = array("300","225");
            
          $neu = array("600","400");
            return 
          str_replace($alt$neu$input);
          ?>
          am Ende des Dokuments eingefügt nicht das gesamte Dokument durchsuchen und alle 300 zu 600, sowie alle 225 zu 400 ersetzen?

          Kommentar


          • #6
            PHP-Code:
            $text '<div class="postsingle">Für 400 Eur bekommt man 225 Äpfel</div>';
            $text str_replace( array(400225), array(600,300), $text); 

            Kommentar


            • #7
              Danke!

              Das Problem ist nur, dass der Inhalt im Div dynamisch generiert wird und nicht immer exakt der gleiche ist.

              Kommentar


              • #8
                Das str_replace bezieht sich auf die zu ersetzende Keywords. Wie das Div aussieht oder welcher Text noch drin steht spielt keine Rolle. Es wird explizit nach den Keyword 400 & 225 gesucht. Wenn diese nicht vorhanden sind wird natürlich nichts ersetzt.

                Welche Fälle sind bekannt, bzw. hättest Du ein paar Beispiele für das Problem?

                Kommentar


                • #9
                  PHP-Code:
                  <div class="postsingle">

                  <
                  span class="vvqbox vvqvimeo" style="width:300px;height:225px;"><span id="vvq-35-vimeo-1"><ahref="http://www.vimeo.com/3846698">http://www.vimeo.com/3846698</a></span></span>

                  <script type="text/javascript">
                      
                  swfobject.embedSWF("http://www.vimeo.com/moogaloop.swf""vvq-35-vimeo-1""300""225""9"vvqexpressinstall, { "wmode""opaque""allowfullscreen""true""server""www.vimeo.com""clip_id""3846698""show_portrait""0""show_title""0""show_byline""0""fullscreen""1""color""FFFFFF" }, vvqparamsvvqattributes);
                  </script>

                  </div> 
                  So könnte z.B. ein .postsingle div aussehen. Es geht also um das Einbetten von Videos, welche als einzige Gemeinsamkeit eben das umgebende div, sowie die Größenangaben sind.

                  Kommentar


                  • #10
                    Ein Kumpel hat mir das geschickt, aber leider funktioniert es auch nicht. Weiss hier vielleicht jemand, wo der Fehler ist?

                    PHP-Code:
                    <?php


                    $t 
                    '<div class="entry">

                    <span class="vvqbox vvqvimeo" style="width:300px;height:225px;"><span id="vvq-35-vimeo-1"><ahref="http://www.vimeo.com/3846698">http://www.vimeo.com/3846698 </a></span></span>

                    <script type="text/javascript">
                        swfobject.embedSWF("http://www.vimeo.com/moogaloop.swf", "vvq-35-vimeo-1", "300", "225", "9", vvqexpressinstall, { "wmode": "opaque", "allowfullscreen": "true", "server": "www.vimeo.com", "clip_id": "3846698", "show_portrait": "0", "show_title": "0", "show_byline": "0", "fullscreen": "1", "color": "FFFFFF" }, vvqparams, vvqattributes);
                    </script>

                    </div>'
                    ;

                    $t str_replace("\n""\\n"$t);
                    $t str_replace("\r"""$t);

                    $b preg_replace('|<div class="entry">(.*)300(.*)</div>|''<div class="entry">$1 600 $2</div>'$t);

                    $b str_replace("\\n""\n"$b);

                    echo 
                    $b;

                    ?>

                    Kommentar


                    • #11
                      Hast Du die SWFObject lib eingebunden ? Wenn ja, wie lautet der Pfad (Weburl..) ?

                      Kommentar


                      • #12
                        Dein Thread-Titel ist schlecht bzw. unglücklich gewählt. Bitte ändere diesen und beachte dabei Bitte aussagekräftige Threadtitel verwenden

                        Kommentar


                        • #13
                          Hi. Ich habe es gerade eben lösen können. Quasi eine Mischung aus deinem Ansatz und dem meines Freundes. Und ich musste am WP Core rumfummeln, was aber nicht so tragisch ist. Hab mir die Änderungen notiert und baue sie beim nächsten Update von Hand ein.

                          PHP-Code:
                          function the_content($more_link_text null$stripteaser 0$more_file '') {
                              
                          $content get_the_content($more_link_text$stripteaser$more_file);
                              
                          $content apply_filters('the_content'$content);
                              
                          $content str_replace(']]>'']]&gt;'$content);
                              echo 
                          $content;

                          wurde zu:

                          PHP-Code:
                          function the_content_single($more_link_text null$stripteaser 0$more_file '') {
                              
                          $content get_the_content($more_link_text$stripteaser$more_file);
                              
                          $content apply_filters('the_content'$content);
                              
                          $content str_replace(']]>'']]&gt;'$content);
                              
                          $b str_replace( array(300225), array(600,400), $content);
                              echo 
                          $b;

                          Im Theme rufe ich dann eben the_content_single auf, anstelle von the_content. Ein direktes Einbinden der Funktion ins Theme hat leider nicht geklappt – stört aber nicht weiter. Notiere mir einfach die Änderungen und fixe das bei einem Update manuell.

                          Jetzt darf ich zwar nie wieder die Zahlen 300 und 225 in Posts verwenden, aber das bekomm ich schon hin!

                          Danke auch an Dich!

                          Kommentar

                          Lädt...
                          X