Tom: Datei einlesen und String suchen

Beitrag lesen

Hello,

Ich lese eine dxf-Datei(ASCII) ein und möchte nach einem bestimmten String suchen

$zeilen = file ('z1.dxf');

$key = array_search("LINE", $zeilen);
echo "KEY= ".$key."<br>";


>   
> Das liefert leider kein Ergebnis. Wenn ich das Element direkt anspreche  
>   
> `echo "KEY= ". $zeilen[1567];`{:.language-php}  
>   
> bekomme ich die korrekte Ausgabe `LINE`{:.language-sql}  
>   
> Woran liegt es?  
  
an den unsichtbaren Zeichen?  
  
Array\_search() fürht einen exaxten Vergleich der "Needle" mit den Elementen des "Haystacks" durch. Diese enthalten aber außer dem gesuchten Begriff auch das Zeilenendezeichen.  
  
ein     $zeilen = file ('z1.dxf', FILE\_IGNORE\_NEW\_LINES);  
  
würde Dir vermutlich schon weiterhelfen.  
  
Wenn Du nun aber den Suchstring nur in einem Teil der Zeile suchst, dann könntest Du das Array auch selber iterieren:  
  
    $zeilen = file ('z1.dxf', FILE\_IGNORE\_NEW\_LINES);  
    $found = false;  
  
    if (is\_array($zeilen))  
    {  
        foreach($zeilen as $lineno => $single\_line)  
        {  
            if (false !== ($found = strpos($single\_line, $search)) break;  
        }  
    }  
    else  
    {  
        ## Fehlerbehandlung für file()  
    }  
  
    if ($found !== false)  
    {  
        echo "<p>gesuchter Begriff " .  
             htmlspecialchars($search) .  
             " wurde in Zeile <strong>$key</strong> an der Position " .  
             "<strong>$found</strong> gefunden</p>";  
    }  
    else  
    {  
        "<p>Suchbegriff wurde nicht gefunden</p>";  
    }  
  
  
  
So oder so ähnlich für die Ein-Byte-Codierung.  
Bei UTF-8 müsstest Du die entsprechenden mb-Funktionen benutzen.  
  
<http://de.php.net/manual/en/ref.mbstring.php>  
  
  
  
  
Liebe Grüße aus dem schönen Oberharz  
  
  
Tom vom Berg  
![](http://selfhtml.bitworks.de/Virencheck.gif)  
  

-- 
 ☻\_  
/▌  
/ \ Nur selber lernen macht schlau  
<http://bergpost.annerschbarrich.de>