Gaaanz kleines RegExp-Problemchen

yahooooo

Mitglied
Moin!

Also folgendermaßen: ich habe hier eine Datei, aus der ich bestimmte Strings auslesen muss. Und zwar stehen in der Datei ein paar .de-Domainnamen drin. Davor steht jeweils noch was:
Notify*UPDATE:*domain.de
(Sternchen entsprechen hier Leerzeichen)
Anhand Notify UPDATE: kann man die Domains finden. Ich versuch das jetzt schon ne zeitlang mit regulären Ausdrücken, aber irgendwie komme ich damit (hab mir mal die Beispiele auf php-faq.de angesehen) nicht wirklich vorwärts. Hab damit auch noch nie gearbeitet. Ich will im Grunde die Datei einmal durchlaufen und die Domains einfach nur auf dem Bildschirm ausgeben.

Kann mir da mal eben jemand helfen? Wär echt nett.
 
Hi, ich würde es mal so probieren:

<?PHP
$zaehler = 3;
while (bis Dateiende)
{
$string = Zeile von Datei;
$array = explode("*",$string);
echo $array[$zaehler];
echo "<br />";
$zaehler = $zaehler + 3;
}
?>

Weiss nicht ob es so funtzt aber so ähnlich vom Prinzip her könntest du es machen
 
Ich dachte da eher an sowas:

PHP:
<?php
// den Hostnamen aus URL holen
preg_match("/^(http:\/\/)?([^\/]+)/i",
   "http://www.php.net/index.html", $treffer);
$host = $treffer[2];

// die letzten beiden Segmente aus Hostnamen holen
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $treffer);
echo "Der Domänen-Name lautet: {$treffer[0]}\n";
?>

Nur krieg ichs irgendwie nicht hin, das Suchmuster anzupassen...so schwer kann das ja nicht sein, aber ich hab das vorher noch nie gemacht...typisch...immer freitags kurz vorm Wochenende kommt der Chef damit an...
 
Probier mal Folgendes:
PHP:
<?php

	$string = 'balbla bla http://example.org/blablabla/bla/ blabla blabla bla';

	$url_patterns = array(
		'http'		=> "(?:http://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?)(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))*)(?:\?(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))?)?)",
		'ftp'		=> "(?:ftp://(?:(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*)(?::(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*))?@)?(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?))(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*))*)(?:;type=[AIDaid])?)?)"
	);
	preg_match('/' . addcslashes($url_patterns['http'], chr(47)) . '|' . addcslashes($url_patterns['ftp'], chr(47)) . '/', $string, $matches);
	$url_parsed = parse_url($matches[0]);

	echo 'Der Domain-Name lautet: <code>'.$url_parsed['host'].'</code>';

?>
 
naja...im Prinzip scheint das ja zu funktionieren. allerdings hab ich in der datei, die da ausgelesen werden soll, allerhand nicht druckbare sonderzeichen, die verhindern, dass ich die datei komplett durchziehen kann. gibts da ne effektive funktion, die die entschärft?
 
Was verstehst du unter „nicht druckbaren Sonderzeichen“ und wieso verhindern sie das komplette „Durchziehen“?
 
Ist halt ne Binärdatei mit allerhand Steuerzeichen und so. Im Grunde müsste ich erst einmal einen Durchlauf machen, welcher alles, was kein Buchstabe, Zahl, Doppelpunkt oder Slash ist, rauslöscht. Dann kann ich erst Eure Vorschläge mal darauf ansetzen.

Ok...es ist halt eine .dbx-Datei von Outlook Express. Darin sind ca. 1500 Mails drin, welche jeweils in den Betreffzeilen eine Domain stehen haben. Wie oben halt schon beschrieben. Die will ich auslesen, denn die Alternative wäre, alles von Hand per Copy & Paste zu machen, da ich kein Programm finden kann, was das kann.

Das Problem ist, dass ich hier nur 30sec für das Script hab. Danach bricht es ab .
 
Problem erledigt. Hab doch noch ein Programm gefunden, mit dem man die e-Mails aus der Datei extrahieren kann und den .eml-Dateien den Betreff als Namen geben kann. Dann einfach mit
dir /b *.eml >list.txt
ne Textdatei erstellt und den Müll aus den Dateinamen rausgelöscht.

Aber Danke trotzdem! Werd mich doch so langsam mal an reguläre Ausdrücke ranwagen müssen...
 
Zurück