preg_replace greift nicht

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

  • preg_replace greift nicht

    Hallo,

    ich lasse mittels php einen Text aus einer Datei auslesen und in eine Datenbank schreiben. Dieser Text sieht ausschnittsweise ungefähr so aus:

    Code:
    (...)Kein Mini mit vier Ringen<br />
    
    <table width="1%" border="0" cellspacing="0" cellpadding="0" bgcolor="#d0d0d0" align="right" >
    <tr><td align="center">
    <a href="http://www.xyz.de/_/tools/picview.html?_CMELEM=754823" target="PIC754823" 
    onClick="window.open('http://www.xyz.de/_/tools/picview.html?_CMELEM=754823','PIC754823',
    'width=480,height=412,scrollbars=no');return(false);">
    <img border="0" vspace="2" hspace="2" src="http://www.xyz.de/storage/pic/alfa/wt/wirtscha/754823_0_142446891_7002.jpg"
     width="80" height="44" alt="" />
    <br></a></td></tr>
    <tr><td align="right" class="thmautor"></td></tr>
    <tr><td><table align="center" width="100%" cellspacing="0" cellpadding="4" border="0">
    <tr><td class="thmtext">
    <a href="http://www.xyz.de/_/tools/picview.html?_CMELEM=754823" target="PIC754823" 
    onClick="window.open('http://www.xyz.de/_/tools/picview.html?_CMELEM=754823','PIC754823',
    'width=480,height=412,scrollbars=no');return(false);"><img src="../uploads/pics/lupe.gif" 
    border="0" width="38" height="9" align="right"></a>
    
    So soll er ungef&#228;hr aussehen, der Audi A1. Auff&#228;llig sind der gro&#xDF;e K&#252;hlergrill und die coup&eacute;hafte Seitenlinie. 
    Das neue Einstiegsmodell der Marke wird zun&#228;chst als Dreit&#252;rer erh&#228;ltlich sein, die Preise 
    starten etwa bei 17 000 bis 18 000 Euro.Foto: privat
    </td></tr></table>
    </td></tr></table>
    
    <p>Dieses Mal soll alles besser werden.(...)
    Nun möchte ich den Text so verändern dass die tables durch divs ersetzt werden, also ca. so:

    Code:
    <div class="bildbox">
    <div class="bildbox_thumb">Bild</div>
    <div class="bildbox_zeile">Untertitel</div>
    <div class="bildbox_text"><p>Text</p></div>
    </div>
    ich habs mit folgendem code versucht:
    PHP-Code:
    $search '/<table width="1%" border="0" cellspacing="0" cellpadding="0" bgcolor="#d0d0d0" align="right" >
    <tr><td align="center">(.*?)<br><\/a><\/td><\/tr>
    <tr><td align="right" class="thmautor">(.*?)<\/td><\/tr>
    <tr><td><table align="center" width="100%" cellspacing="0" cellpadding="4" border="0">
    <tr><td class="thmtext">(.*?)
    <\/td><\/tr><\/table>
    <\/td><\/tr><\/table>/'
    ;
    $ergebnis preg_replace($search'<div class="bildbox">
    <div class="bildbox_oben"></div>
    <div class="bildbox_mitte">
    <div class="bildbox_thumb">$1</a></div>
    <div class="bildbox_zeile">$2 $3</div>
    <div class="bildbox_text"><p>$4</p></div></div>
    <div class="bildbox_unten"></div>
    </div>'
    $bodytext); 
    Allerdings bleibt mein Text immer derselbe, mit den Tabellen. Ich hab hin und her probiert aber nie wurde auch nur ein Zeichen aus dem Text ersetzt. Kann mir vielleicht jemand beim erstellen des richtigen Suchmusters helfen?

    Würde mir sehr helfen.

    PS: Sorry für die Riesenseitenbreite. ^^'''

    Gruß
    BattleWizz
    Zuletzt geändert von battlewizz; 04.09.2007, 12:09.

  • #2
    Nein, dass kann ja kein mensch lesen! korrigieren!

    versuch deine regex erstmal mit preg match zu vereinfachen, so dass du nur das nötigste drin hast. die bauste dann stück für stück auf. immer einen wert (backreference) mehr ein bauen, bis du alle benötigten hast.

    ich sehe auch keinen grund den halben quelltext in die rule zu bauen.
    Zuletzt geändert von TobiaZ; 04.09.2007, 12:01.

    Kommentar


    • #3
      PS: Sorry für die Riesenseitenbreite. ^^'''
      Dann korrigiere das umgehend, pronto und sofort
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Original geschrieben von TobiaZ
        Nein, dass kann ja kein mensch lesen! korrigieren!

        versuch deine regex erstmal mit preg match zu vereinfachen, so dass du nur das nötigste drin hast. die bauste dann stück für stück auf. immer einen wert (backreference) mehr ein bauen, bis du alle benötigten hast.

        ich sehe auch keinen grund den halben quelltext in die rule zu bauen.
        Habs korrigiert, sorry... ._.

        Naja ich hab versucht das ganze schrittweise zu machen, bin aber bereits beim ersten <table></table> gescheitert, leider...

        Kommentar


        • #5
          So habs gelöst, mit hilfe dieser Seite.

          Mein Pattern sieht jetzt so aus:

          PHP-Code:
          $pattern '#<table .* >.*<td align=\"center\">
          <a (.*)<br>.*<td align=\"right\" class=\"thmautor\">(.*)</td>.*
          <td class=\"thmtext\"><a (.*) align=\"right\"></a>
          (.*)</td></tr>
          </table>.*</table>#is'

          Kommentar


          • #6
            OffTopic:
            Grüße an derHund. Sehr gute Seite!

            Kommentar

            Lädt...
            X