Teile eines Textes "herausschneiden"

GoogleFreak

Grünschnabel
Hi Ihr Profis :),

Ich scripte derzeit an einem Bot, der Einsendungen von User automatisch verarbeiten soll, bis jetzt habe ich aber ein schwieriges Problem:

Einsendungen sehen etwa so aus:

Firefox 2:
http://www.google.de/search?hl=de&q=Firefox+2.0&btnG=Google-Suche&meta=
2.0.0.1
http://www.google.de/search?hl=de&q=Firefox+2.0.0.1&btnG=Suche&meta=
und 2.0.0.2:
http://www.google.de/search?hl=de&q=Firefox+2.0.0.2&btnG=Suche&meta=
und 2.0.0.3:
http://www.google.de/search?hl=de&q=Firefox+2.0.0.3&btnG=Suche&meta=

Nun möchte ich ein Script machen, das mir den roten Text automatisch aus dem Text zieht und daraus ein Array macht (also Firefox+2.0 zuerst, dann Firefox+2.0.0.1 dann Firefox+2.0.0.2 usw...).

Ich habe das ganze mal mit preg_replace versucht, allerdings hat das nicht wirklich geklappt. Wäre wirklich nett von Euch, wenn Ihr mir helfen könntet.


MFG
GoogleFreak
 
Zuletzt bearbeitet:
PHP:
<?php
$string = 'http://www.google.de/search?hl=de&q=Firefox+2.0&btnG=Google-Suche&meta=';

$arr = explode('&', $string);

echo substr($arr[1], 2);

?>

Sollte der Anfang des Links immer gleich sein, funktioniert es so.
 
Hi,

Danke für Eure Antworten. Das Problem ist, dass PHP die Linien die keinen Link bzw. keinen Googlelink enthalten igorieren soll, danach sollte PHP den rot markieren Text ausgeben bzw. weiterverarbeiten können.

Die Funktion parse_url() könnte ich brauchen, allerdings erst nachdem PHP die oben genannten Links ingoriert.


Ich höffe Ihr könnt mir helfen.

MFG
GoogleFreak
 
Also, du bekommst einen Text, der so ist wie oben, allerdings mit variabel gehaltenen Zeilen.
Daraus willst du nur die Links bekommen. Nun ist die Frage, ob das Ding in einer .txt Datei gespeichert wird oder direkt ans Script übermittelt wird?
 
PHP:
<?php
$string = 'Firefox 2: \n
http://www.google.de/search?hl=de&q=Firefox+2.0&btnG=Google-Suche&meta= \n
2.0.0.1 \n
http://www.google.de/search?hl=de&q=Firefox+2.0.0.1&btnG=Suche&meta= \n 
und 2.0.0.2: \n 
http://www.google.de/search?hl=de&q=Firefox+2.0.0.2&btnG=Suche&meta= \n
und 2.0.0.3: \n
http://www.google.de/search?hl=de&q=Firefox+2.0.0.3&btnG=Suche&meta=';

$arr = explode('\n', $string);
foreach($arr as $value) {
	if(substr(trim($value), 0, 4) == 'http') {
		$temp_arr = explode('&', $value);
		$keywords[] = substr($temp_arr[1], 2); 
	}
}

echo "<pre>";
print_r($keywords);
echo "</pre>";
?>

So vielleicht?

Ausgabe:
PHP:
Array
(
    [0] => Firefox+2.0
    [1] => Firefox+2.0.0.1
    [2] => Firefox+2.0.0.2
    [3] => Firefox+2.0.0.3
)
 
Hallo,
so sollte es auch funktionieren:
PHP:
<pre>
<?php
    $string = 'Firefox 2:
http://www.google.de/search?hl=de&q=Firefox+2.0&btnG=Google-Suche&meta=
2.0.0.1
http://www.google.de/search?hl=de&q=Firefox+2.0.0.1&btnG=Suche&meta=
und 2.0.0.2:
http://www.google.de/search?hl=de&q=Firefox+2.0.0.2&btnG=Suche&meta=
und 2.0.0.3:
http://www.google.de/search?hl=de&q=Firefox+2.0.0.3&btnG=Suche&meta=';

    preg_match_all('/(.*?)http:\/\/www\.google\.de\/search\?hl=de&q=(.*?)&btnG=(.*?)/is', $string, $array);
    print_r($array[2]);
?> 
</pre>
Der Reguläre Ausdruck ist zwar nicht besonders schön :rolleyes:, aber er sollte seinen Zweck erfüllen. ;)

mfg
forsterm
 
Hallo,
so sollte es auch funktionieren:
PHP:
<pre>
<?php
    $string = 'Firefox 2:
http://www.google.de/search?hl=de&q=Firefox+2.0&btnG=Google-Suche&meta=
2.0.0.1
http://www.google.de/search?hl=de&q=Firefox+2.0.0.1&btnG=Suche&meta=
und 2.0.0.2:
http://www.google.de/search?hl=de&q=Firefox+2.0.0.2&btnG=Suche&meta=
und 2.0.0.3:
http://www.google.de/search?hl=de&q=Firefox+2.0.0.3&btnG=Suche&meta=';

    preg_match_all('/(.*?)http:\/\/www\.google\.de\/search\?hl=de&q=(.*?)&btnG=(.*?)/is', $string, $array);
    print_r($array[2]);
?> 
</pre>
Der Reguläre Ausdruck ist zwar nicht besonders schön :rolleyes:, aber er sollte seinen Zweck erfüllen. ;)

mfg
forsterm

Perfekt! Danke für Eure Antworten!

MFG
GoogleFreak
 
Zurück