Eregi Problem... blicks einfach nicht!

MC-René

Erfahrenes Mitglied
Huhu! :p

Also ich les mit snoopy ne Site aus:
PHP:
$snoopy = new Snoopy;
$snoopy->fetch($alink);
$inhalt=$snoopy->results;
$GrabStart = 'k.jpg" border="0" alt="';
$GrabEnd = '"></a><img src="';
$GrabData = eregi("$GrabStart(.*)$GrabEnd", $snoopy->results, $output1);
$output_k = $output1[1];

$output_k entspricht auch meinen Wünschen...

Nun will ich die bereits ausgelesenen Daten erneut durchsuchen:

PHP:
$GrabStart = '<h2><a href="produkt.aspx?artikelid=';
$GrabEnd = 'Art-Nr.:';
$GrabData = eregi("$GrabStart(.*)$GrabEnd", $inhalt, $output2);
$output_kneu = $output2[1];

$output_kneu bleibt aber leer...

Wenn ich mir die $inhalt angucke kommen beide (inhalte der) variablen $GrabStart + $GrabEnd drin vor...

Auch $output2[0] ist leer (sollte mir lt. manual die kpl. Zeichenkette auswerfen...

Was blick ich da nicht!?

Danke schonmal! ;)

@mods: sorry wg. dem Doppelpost, wg. der snoopy-sache ;)
 
Interessant wäre zu erfahren, was genau der Inhalt von $inhalt ist!

So kann man nur raten (verwende preg_match anstelle von eregi):

Code:
preg_match("/\$GrabStart(.*)\$GrabEnd/ims", $inhalt, $output2);

Gruß
 
Der Inhalt von $inhalt ist halt eine Website...

Komplett mit Tags und allem was dazu gehört!

preg_match hab ich mir auch angeschaut, das schien mir zu kompliziert...

schaut aber ganz einfach bei deinem Code-Schnippsel aus...

;-)

Kannst Du bzw. jemand kurz auf die Zeichen in

PHP:
preg_match("/\$GrabStart(.*)\$GrabEnd/ims", $inhalt, $output2);

eingehen... also was bedeutet z.B. das / und das \ sowie /ims

EDIT:
Habs noch nicht ausprobiert, aber weis schonmal was ims bedeutet :-) ...

Modifier i (ignore case)
Ist dieser Modifier gesetzt, wird nicht zwischen Groß- und Kleinschreibung eines Zeichens unterscheiden.

Modifier m (multiline)
Falls im Regulären Ausdruck Zirkumflex und Dollarzeichen in ihrer Funktion als Metazeichen verwendet werden, beziehen sich diese immer auf den gesamten Text. Ist der Modifier m gesetzt, so gelten ^ und $ nur für jede einzelne Zeile.

Modifier s (dot all)
Normalerweise trifft der Punkt nicht auf Zeilenumbrüche zu. Mit diesem Schalter werden mit dem Punkt auch Zeilenumbrüche erkannt.
 
Zuletzt bearbeitet:
Du musst die Metazeichen in deinen Suchstrings maskieren:
PHP:
$GrabStart = 'k.jpg" border="0" alt="';
$GrabEnd = '"></a><img src="';
$GrabData = preg_match('/'.preg_quote($GrabStart, '/').'(.*)'.preg_quote($GrabEnd, '/').'/i', $snoopy->results, $output1);
$output_k = $output1[1];
Aber du brauchst hier gar keinen regulären Ausdruck:
PHP:
$GrabStart = 'k.jpg" border="0" alt="';
$GrabEnd = '"></a><img src="';
if (($start = stripos($snoopy->results, $GrabStart)) !== false && ($end = stripos($snoopy->results, $GrabEnd, $start+1)) !== false) {
    $output_k = substr($snoopy->results, $start, $end+strlen($GrabEnd));
}
 
Thx @all...

Damit hats funktioniert...

PHP:
$GrabStart = 'k.jpg" border="0" alt="';
$GrabEnd = '"></a><img src="';
$GrabData = preg_match('/'.preg_quote($GrabStart, '/').'(.*)'.preg_quote($GrabEnd, '/').'/i', $snoopy->results, $output1);
$output_k = $output1[1];

Bei
PHP:
$GrabStart = 'k.jpg" border="0" alt="';
$GrabEnd = '"></a><img src="';
if (($start = stripos($snoopy->results, $GrabStart)) !== false && ($end = stripos($snoopy->results, $GrabEnd, $start+1)) !== false) {
    $output_k = substr($snoopy->results, $start, $end+strlen($GrabEnd));
}

gabs Probleme (vermutlicht wegen den Quotes!

Danke nochmal ;)
 
War nur ein Denkfehler beim Ausschneiden:
PHP:
$GrabStart = 'k.jpg" border="0" alt="';
$GrabEnd = '"></a><img src="';
if (($start = stripos($snoopy->results, $GrabStart)) !== false && ($end = stripos($snoopy->results, $GrabEnd, $start+1)) !== false) {
    $output_k = substr($snoopy, $start+strlen($GrabStart), $end-$start-strlen($GrabStart));
}
 
Zurück