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

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