php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-08-2007, 14:21
frederic
 Registrierter Benutzer
Links : Onlinestatus : frederic ist offline
Registriert seit: Jan 2003
Beiträge: 73
frederic ist zur Zeit noch ein unbeschriebenes Blatt
Standard Feste URL parsen

Grüß Gott,

ich möchte eine URL parsen, die fest definiert ist. Zum Beispiel "http://www.tagesschau.de/chat/". Die Adresse darf jedoch weitergehen und "http://www.tagesschau.de/chat/xy/" lauten. Wichtig ist nur, dass zumindest "http://www.tagesschau.de/chat/" vorkommt! Ist dies der Fall, möchte ich die gesamte URL auslesen bzw. in der $matches-Variable haben. Die Variable, in der gesucht wird ($value), ist x-beliebig groß - in ihr kann eine Menge stehen, es können auch mehrere URLs sein. Gelöst werden soll das mittels preg_match_all(). Ich komme leider trotz mehrstündigen Versuchen einfach nicht weiter ... Kurz: Es kommt kein Fehler, doch es wird, obwohl in $value vorhanden, kein Treffer angezeigt.

Mein bisheriger Code:
Code:
preg_match_all('!(' . $url . '[^\s]*)!i', $value, $matches)
Angenommen, in $url steht "http://www.spiegel.de/politik/". Das System dürfte jetzt nur Links parsen, die unterhalb von $url stehen. Also z. B. "http://www.spiegel.de/politik/deutschland/0,1518,499121,00.html". Nicht aber "http://www.spiegel.de/wirtschaft/0,1518,499220,00.html". Und um das ganze noch schwerer zu machen, wird dann die komplette, geparste URL ausgelesen. Das würde das o.g. Skript aber wohl schon machen, wenn man an das $matches vorne $url dran hängt.

Geändert von frederic (10-08-2007 um 14:24 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 10-08-2007, 14:47
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ich halte es für ausgeschlossen, dass du dich nach 4,5 Jahren (damals hast du deinen ersten und bisher letzten Beitrag geschrieben) noch an dein Passwort erinnerst. Daraus folgt, dass du hier regelmäßig mitliest.
Da sollte dir doch schon mal aufgefallen sein, dass wir hier stets auf unsere Regeln pochen. In deinem Fall heißt das error_reporting(E_ALL) und Testausgabe des Pattern.

Dann siehst du schon, dass die URL genau so im Pattern steht, wie sie in $url enthalten ist. Das hat aber Nebenwirkungen. Denn der Punkt (wie in spiegel-Punkt-de) hat in regulären Ausdrücken eine Bedeutung.
Du mußt $url also umschreiben bevor du es ins Pattern einbaust. Bei der Gelegenheit kannst du auch gleich berücksichtigen, dass das www. meist optional ist.

Zum Testen eignet sich übrigens http://regexp-evaluator.de/evaluator/ ganz hervorangend.
Mit Zitat antworten
  #3 (permalink)  
Alt 10-08-2007, 14:50
frederic
 Registrierter Benutzer
Links : Onlinestatus : frederic ist offline
Registriert seit: Jan 2003
Beiträge: 73
frederic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von onemorenerd
[B]Ich halte es für ausgeschlossen, dass du dich nach 4,5 Jahren (damals hast du deinen ersten und bisher letzten Beitrag geschrieben) noch an dein Passwort erinnerst. Daraus folgt, dass du hier regelmäßig mitliest.
Ähm...?
Zitat:
Da sollte dir doch schon mal aufgefallen sein, dass wir hier stets auf unsere Regeln pochen. In deinem Fall heißt das error_reporting(E_ALL) und Testausgabe des Pattern.
Zum einen kenne ich die Regeln, zum anderen habe ich sowohl error_reporting(E_ALL) ausgegeben als auch das Pattern. Ohne entsprechende Aussage für mein Problem, wie ich im ersten Beitrag schrieb.
Zitat:
Dann siehst du schon, dass die URL genau so im Pattern steht, wie sie in $url enthalten ist. Das hat aber Nebenwirkungen. Denn der Punkt (wie in spiegel-Punkt-de) hat in regulären Ausdrücken eine Bedeutung.
Ergo muss die URL entsprechend vorher geparst werden, um alle möglichen regulären Ausdrücke in der URL (wie ein Punkt) irgendwie "auzuschalten" - beispielsweise mit Backslashes?
Mit Zitat antworten
  #4 (permalink)  
Alt 10-08-2007, 14:54
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Ja.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5 (permalink)  
Alt 10-08-2007, 14:55
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Genau und "-" mußt du auch maskieren.
Mit Zitat antworten
  #6 (permalink)  
Alt 10-08-2007, 15:13
frederic
 Registrierter Benutzer
Links : Onlinestatus : frederic ist offline
Registriert seit: Jan 2003
Beiträge: 73
frederic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke. Problem aber noch nicht gelöst - was beachte ich nicht?
Auf Grundlage des o.g. Codes und des Parsens von Punkt und Strich, sieht der RegExp folgendermaßen aus:
Code:
!(http://www\.spiegel\.de[^\s]*)!i
Der neue PHP-Code:
PHP-Code:
<?php preg_match_all('!(' getURLParse($url) . '[^\s]*)!i'$value$matches); ?>
E_ALL ist, wie schon zuvor, ergebnislos.
EDIT:
unbruch sponsored by tobiaz

Geändert von TobiaZ (10-08-2007 um 15:25 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 10-08-2007, 15:18
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

:// musst du natürlich auch escapen!!!
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #8 (permalink)  
Alt 10-08-2007, 15:22
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Bitte brich deinen Code um.

Das Matchen funktioniert wie man sieht.
Dort kannst du auch sehen, was in $matches steht.

@Tobiaz: Warum? Doppelpunkt und Slash haben nur eine Funktion in reg. Ausdrücken, wenn sie als Delimiter benutzt werden.
Mit Zitat antworten
  #9 (permalink)  
Alt 10-08-2007, 15:26
frederic
 Registrierter Benutzer
Links : Onlinestatus : frederic ist offline
Registriert seit: Jan 2003
Beiträge: 73
frederic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ups. Nach dem Format?
Code:
. = \.
: = \:
- = \-
/ = \/
Also (geparst):
Code:
!(http\:\/\/www\.spiegel\.de[^\s]*)!i
Bringt aber nichts ... Es kommt mindestens einmal vor.
Mit Zitat antworten
  #10 (permalink)  
Alt 10-08-2007, 15:26
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

hasse recht!
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #11 (permalink)  
Alt 10-08-2007, 15:34
frederic
 Registrierter Benutzer
Links : Onlinestatus : frederic ist offline
Registriert seit: Jan 2003
Beiträge: 73
frederic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Okay, danke für eure Geduld. Nun klappt es .
Mit Zitat antworten
  #12 (permalink)  
Alt 10-08-2007, 15:41
jens76
 Member
Links : Onlinestatus : jens76 ist offline
Registriert seit: Dec 2004
Beiträge: 328
jens76 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

jetzt können fleißig contents beim spiegel geklaut werden
Mit Zitat antworten
  #13 (permalink)  
Alt 10-08-2007, 15:43
frederic
 Registrierter Benutzer
Links : Onlinestatus : frederic ist offline
Registriert seit: Jan 2003
Beiträge: 73
frederic ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jens76
jetzt können fleißig contents beim spiegel geklaut werden
Haha, ja, theoretisch. Ist aber nur ein Beispiel gewesen. Ich brauche das für etwas internes.
Mit Zitat antworten
  #14 (permalink)  
Alt 10-08-2007, 15:49
jens76
 Member
Links : Onlinestatus : jens76 ist offline
Registriert seit: Dec 2004
Beiträge: 328
jens76 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ach so intern..

@onemorenerd
wozu gibts eine passwort vergessen abfrage?
oder er hat ein standartpasswort
Mit Zitat antworten
  #15 (permalink)  
Alt 10-08-2007, 16:00
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

OffTopic:
Okay, dann hat er sich nach so langer Zeit zumindest noch an seinen Benutzernamen, seine Emailadresse oder sonstwas erinnert. So ganz ohne alles kommt er hier ja nicht zum Posten.
Ist mir auch egal. Ich wollte nur auf die Regeln hinweisen.
Hat mit Stehkunst übrigens nichts zu tun.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:13 Uhr.