• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

URL aus text parsen

KIUNES

New member
So, ich habe einen text:

HTML:
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla 
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla 
bla bla bla bla bla bla bla bla bla bla bla http://www.domain.de bla bla bla bla 
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla 
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla

so jetzt will ich aus diesem Text die URL auslesen und in eine variable packen.
Meine Frage, wie suche ich in einem Text?
 
Zuletzt bearbeitet:
Ok super tip, hab nun:
PHP:
<?php
if (preg_match("/\bhttp:/i", "Hier befindet sich die URL http://www.domain.de und soll in variable gelegt werden!")) {
   echo "domain gefunden";
} else {
   echo "keine domain";
}
?>
aber wie pack ich nun die URL in eine variable?
 
Wenn du dir doch schon die Mühe machst und eine Antwort schreibst, warum hilfst du den menschen denn dann nicht? Sammelst du hier nur Beiträge ohne das Forum effektiv zu unterstützen? Manchmal frag ich mich echt, warum du hier angemeldet bist, wenn du im Grunde genommen nichts machst! Nunja wenn es dich bereichert solls mir egal sein ;)
 
Wenn du dir doch schon die Mühe machst und eine Antwort schreibst, warum hilfst du den menschen denn dann nicht? Sammelst du hier nur Beiträge ohne das Forum effektiv zu unterstützen? Manchmal frag ich mich echt, warum du hier angemeldet bist, wenn du im Grunde genommen nichts machst! Nunja wenn es dich bereichert solls mir egal sein ;)
Und warum weigerst Du Dich das Handbuch zu lesen? Ist kostenlos, mehrsprachig, beschreibt alle Funktionen von PHP, ist durchsuchbar und hat zahllose Beispiele, die Live Variante sogar kommentierte Beispiele.
Es kann doch nicht angehen, dass wir Dir hier jeden einzelnen Befehl erklären müssen, den Du mit einer einfachen Suche bei Google oder gleich im PHPManual im nu gefunden hättest und dessen Erklärung dort umfangreicher und besser ist als das, was ein kurzer Post hier leisten kann.
Aber anscheinend hältst Du nichts von Handbüchern oder dem Selbststudium und willst stattdessen maßschneiderte Lösungen mundfertig geliefert bekommen.
Ich habe Dich jetzt schon mehrfach auf das Handbuch verwiesen, wenn Du ansatzweise mal dort reingeschaut hättest, dann wüßtest Du warum.

So, jetzt habe ich Dir schon wieder keine direkte Lösung gegeben. Dafür habe ich schon wieder einen Post mehr. Hurra.

Apropos Effektivität: Man könnte es auch so drehen, dass Deine Verweigerung der Dokumentation wertvolle Antwortzeiteinheiten des Forums konsumiert, die eventuell anderen Benutzern effektiver zur Verfügung gestellt werden könnten. Nur mal so als Gedankenspiel. ;)
 
Meinst du wenn ich irgendwas wissen will mach ich direkt ein thread? ICh suche doch dann schon stunden bei google und beim manual steig ich nicht immer durch, klar ist de3.php.net/manual/de meine startseite, da bin ich mehr als mir lieb ist, hilft ja auch, aber wenn ich doch bei manchen sachen nicht durchsteige, dann frage ich doch im forum, bevor ich meine idee verwerfen muss, dafür sollte doch das forum dasein oder nicht?! Und ich denke nicht dass wenn du mir antwortest, dies Zeitverschwendung deinerseits ist, weil du mir ja helfen kannst ;)
 
Also ich denke dieses Beispiel kommt der sache schon nah
PHP:
<?php
// den Hostnamen aus URL holen
preg_match('@^(?:http://)?([^/]+)@i',
    "http://www.php.net/index.html", $treffer);
$host = $treffer[1];

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

aber wenn ich in die zeichen kette jetzt einen text schreiben mit irgendwo einer URL schmeißt der mir nix raus :(
 
RegExp fehlerhaft:
PHP:
<?php
// den Hostnamen aus URL holen
preg_match(
	'@(?:http://)([^/]+)@i',
	" der Link heißt: http://www.php.net/index.html und nicht anders",
	$treffer
);
$host = $treffer[1];

// die letzten beiden Segmente aus Hostnamen holen
preg_match('/[^.]+\.[^.]+$/', $host, $treffer);
echo "Der Domänen-Name lautet: {$treffer[0]}\n";
?>
 
Kannst du mir erklären warum das jetzt anscheinend an dem ^ und an dem ? in dem suchkreterium lag? Damit ich das auch verstehe bitte.
Was hat das hier zu bedeuten?: /[^.]+\.[^.]+$/ damit ich die ganze URL ausgeben kann
 
Zuletzt bearbeitet:
Der Circonflex (^) markiert den Anfang des Strings - dann kann dein Gesuchtes nicht mehr mitten im Text stehen.
Das Fragezeichen markiert die vorherige Gruppierung als optional - du willst sie aber als Indikatior für eine URL haben, deswegen muss die da stehen.

Der zweite Teil ist doch von dir?
Aber hier ein Überblick über die Pattern-Syntax:PHP: Regular Expression Details - Manual
 
Versuch' mal den 1. RegExp mit HIlfe des Links zu verstehen - dann weißt du warum (lernen tust du dabei auch noch was).

So liefert er es, aber dann muss nach dem Link ein Leerzeichen stehen:
PHP:
<?php
// den Hostnamen aus URL holen
preg_match(
	'@(?:http://)([^ ]+)@i',
	" der Link heißt: http://www.php.net/index.html und nicht anders",
	$treffer
);
echo $treffer[1];
?>
 
dann setzt ich mich mal dran und entschlüssel mal die bedeutung der zeichen - danke dir vielmals für deine Hilfe!
 
Mit dieser RegExp nicht - da musst du sie anpassen.
Aber es gibt ja auch URLs, die ein Komma drin haben und woher soll denn nun die RegExp wissen, ob das dann noch ein Teil der URL ist oder nicht.
 
ja doch nur urls die zu eine get angehangen haben wo ein komma drin ist, dies ist aber nicht der fall, aber ich kann nicht verhindern, dass die user nach der URL kein Komma machen, also wie kann ich das wegmachen?
 
PHP:
   <?php
// den Hostnamen aus URL holen
preg_match(
    '@(?:http://)([a-z0-9+.-/]+)@i',
    " der Link heißt: http://www.php.net/index.html und nicht anders",
    $treffer
);
echo $treffer[1];
?>
 
Wo ist denn jetzt bei diesen Zeichen das Komma? Wie hast du dem jetzt gesagt dass der Komma ignorieren soll?
 
Zurück
Oben