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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

WeltExplorer v1.0

WeltExplorer v1.0 ist ein Dateimanager zum Browsen und Operieren im Dateisystem. Bei installiertem cURL können Ordner und Dateien zu entfernten FTP-Servern hochgeladen bzw. von diesen heruntergeladen werden, etwa zum Erstellen von Backups oder Mirrorsites

06.02.2019 weltvolk | Kategorie: PHP/ File
PG Job Site Pro

> Job Site Pro - web-basiertes Programm, auf PHP/MySQL für Erstellung der funktionellen Job Board Site gebaut. Das hat erweitertes Management-System für Arbeitssuchenden und Arbeitgeber und kann für bestimmte Länder, Regionen oder einfach generelle Job Si

05.02.2019 submit@ | Kategorie: PHP/ Management
ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:46 Uhr.