[Funktion] strpos übersieht ein treffer und hört erst später auf...

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

  • [Funktion] strpos übersieht ein treffer und hört erst später auf...

    Hallo,


    ich habe vor den Quelltext einer html Seite in eine Variable zu lesen.
    Innerhalb dieser Variable suche ich dann nach Muster(n) um Text zwischen Tags zu identifizieren.

    Ich habe es wie folgt realisiert:
    PHP-Code:
    <?php
    $url
    ="192.168.123.1/index.php";
    $seiteninhalt=file_get_contents($url);


    //muell rausmachen damit alles in einer zeile ist
    str_replace("\n"""$seiteninhalt);
    str_replace("<br\>"""$seiteninhalt);
    str_replace(chr(13), ""$seiteninhalt);

    //die position der ueberschrift lokalisieren:
    $suchebeginn='<td class="HeaderMiddle";>';
    $sucheende='</td>';

    $headeranfang=strpos($seiteninhalt$suchebeginn);
    echo 
    "Beginne bei Zeichen ".$headeranfang."<br>";
    $headeranfang=$headeranfang+26//da erst nach dem tag angefangen wird...
    $headerende=strpos($seiteninhalt$sucheende$headeranfang);
    echo 
    "Höre bei dem Zeichen ".$headerende." auf.<br>";

    echo 
    "<br><br><br><br>";

    $header=substr($seiteninhalt$headeranfang$headerende);
    echo 
    $header;
    die Ausgabe die ich (fälschlicherweise) erhalte schaut so aus:
    Code:
    Cinchstecker Rt 5041G X-2022 Red Preiserhöhung wegen Rohstoff</td>
    	
    	<td valign=middle width=40 align=middle nowrap><a href='/shop/dt_index.php?forceLogin=true'><img src='bot_logi.gif' border=0 alt='Zur Login-Seite'></a></td>
    	<td valign=middle width=40 align=middle nowrap><a href="/shop/dt_index.php?showDatenblatt=&PHPSESSID=f55e0547295e146g7c2d34ec07795491"><img src="bot_list.gif" border=0 alt="Zur&uuml;ck zur &Uuml;bersicht"></a></td>
    	<td valign=middle width=40 align=middle nowrap><a href='/shop/dt_index.php?shop=true&showCart=true'><img src='bot_ware.gif' border=0 alt='Ihr Warenkorb'></a></td>
    	</tr>
    </table>
    
    
    <table border=0 cellspacing=0 cellpadding=0 width=100% height=180 valign=middle>
    Er müsste also vor dem "</td>" aufhören. Dem ist aber nicht so - warum aber nur ?


    Vielen Dank!!

  • #2
    wie sieht die ausgabe von:
    Code:
    echo "Beginne bei Zeichen ".$headeranfang."<br>";
    echo "Höre bei dem Zeichen ".$headerende." auf.<br>";
    aus?

    warum ist bei $suchebeginn='<td class="HeaderMiddle";>';
    ein semikolon nach ="HeaderMiddle"?

    Kommentar


    • #3
      wie sieht die ausgabe von:

      code:
      echo "Beginne bei Zeichen ".$headeranfang."<br>";
      echo "Höre bei dem Zeichen ".$headerende." auf.<br>";

      aus?
      Beginne bei Zeichen 628
      Höre bei dem Zeichen 715 auf.

      warum ist bei $suchebeginn='<td class="HeaderMiddle";>';
      ein semikolon nach ="HeaderMiddle"?
      das ist ein Fehler in der html Datei (den ich nicht beheben kann).

      Kommentar


      • #4
        string substr ( string string, int start [, int length] )

        der zweite parameter von substr ist die länge und nicht das offset!


        außerdem, dein code:
        PHP-Code:
        //muell rausmachen damit alles in einer zeile ist
        str_replace("\n"""$seiteninhalt);
        str_replace("<br>"""$seiteninhalt);
        str_replace(chr(13), ""$seiteninhalt); 
        bewirkt garnichts, da du den rückgabewert nicht verwurstest (einer variablen zuweist)

        Kommentar


        • #5
          Original geschrieben von 3DMax
          string substr ( string string, int start [, int length] )

          der zweite parameter von substr ist die länge und nicht das offset!


          außerdem, dein code:
          PHP-Code:
          //muell rausmachen damit alles in einer zeile ist
          str_replace("\n"""$seiteninhalt);
          str_replace("<br>"""$seiteninhalt);
          str_replace(chr(13), ""$seiteninhalt); 
          bewirkt garnichts, da du den rückgabewert nicht verwurstest (einer variablen zuweist)
          hast recht ^^

          hab ich übersehen - danke!

          PHP-Code:
          $differenz=$headerende-$headeranfang;
          //cutt
          $header=substr($seiteninhalt$headeranfang$differenz);
          //muesste funktionieren - nicht? 
          Zuletzt geändert von gizmo101; 31.07.2006, 18:26.

          Kommentar

          Lädt...
          X