getreidemuehlen
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 08.08.2003, 11:39   #1
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg

String verkürzen


Hallo an alle,

ich habe zur Zeit ein Problem mit preg_replace().
Ich glaube ich habe da noch einiges nicht verstanden

Also ich habe in jeder Datei eine Pfadangabe. Die sieht ungefähr so aus:

$pfad = "/index.php?go=1";

dabei ist natürlich der Dateiname und der Variablenname ($go)
varibel.
Aus diesem String möchte ich jetzt allerdings nur den Dateinamen auslesen.
Das soll dann so aussehen:

$pfad = "/index.php";

also habe ich mich mal wieder an RegExp herangewagt.

Das Ergebniss sieht bei mir so aus:

PHP-Code:
$pfad "/index.php?go=1";
$pfad preg_replace("/\/([a-z])\.([a-z]{3})\?([a-z])\=([1-9]{1})/""$1.$2"$pfad );
echo 
$pfad
leider, leider, leider funktioniert das nicht.

Ich erkläre vielleicht mal meinen Ansatz.
Als erstes maskiere ich "/". Dann kommt ja eine Zeichenfolge von Kleinbuchstaben "([a-z])" (hier ist mir schon nicht klar, ob ich eine Länge des Strings angeben muss).
Als nächstes maskiere ich den Punkt "\."
Jetzt kommt eine dreistellige Zeichenfolge (könnte ja auch "htm" sein).
Dann der Fragezeichen "\?" und wieder eine beliebige Menge von Kleinbuchstaben.

Ich hoffe, das ist erstmal richtig so?

Jetzt weis ich allerding noch nicht, wie ich diesen Sting in ein Array teile?

Wie gesagt, ich habe hier einiges noch nicht verstanden
und hoffe (wie immer) auf Hilfe.

mfg Nico
Nico ist offline   Mit Zitat antworten


Alt 08.08.2003, 11:50   #2
TP-Special Mod
 
Benutzerbild von webmichl
 
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
webmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine User
Na, jaaaa....

Für diese Aufgabe ist preg_match() etwas besser geeignet. Und die regexp lässt sich auch etwas einfacher konstruieren:

Was haben wir als Ausgangsstring? /index.php?go=1

Ermitteln wollen wir den Dateipfad. Wie lässt der sich am einfachsten eingrenzen? Doch dadurch, daß er a) mit dem Stringanfang beginnt und b) am Fragezeichen endet.

Aaalso:

preg_match ("/^([^\?]+)/", $String, $Treffer) ;
$gesuchter_Pfad = $Treffer[1];


Zur Erklärung der einzelnen regexp-Elemente kannst Du ja auch noch mal hier vorbeischauen...
webmichl ist offline   Mit Zitat antworten
Alt 08.08.2003, 12:10   #3
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg
Also, ähmmm. Naja, da habe ich wohl doch fals angefangen.

Ich verstehe allerdings den Unterschied zwischen

preg_match und preg_replace nicht so ganz.

Ich habe ja das Tut schon gelesen, aber das ist noch nicht erklärt

Und jetzt schaue ich mir mal Dein Konstrukt an.

Danke ersteinmal

Nico
Nico ist offline   Mit Zitat antworten
Alt 08.08.2003, 12:15   #4
TP-Special Mod
 
Benutzerbild von webmichl
 
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
webmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine User
Zitat:
Original geschrieben von Nico
Ich verstehe allerdings den Unterschied zwischen

preg_match und preg_replace nicht so ganz.
Nun ja: preg_match() überprüft, ob in einem String ein Teilstring enthalten ist und übergibt die Treffer in einem Array. preg_replace() ersetzt in einem String einen Teilstring durch einen anderen Text.
webmichl ist offline   Mit Zitat antworten
Alt 08.08.2003, 12:40   #5
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg
Aha, deswegen reicht es, nur das Anfangs- und Endelement anzugeben.

Naja, jetzt ist mir das ein wenig klarer,
nur was zum Teufel sagt das "^\" am Anfang von Deiner Suchabfrage???

preg_match ("/^([^\?]+)/", $String, $Treffer) ;

Kurz meine Interpretation:

"/^" --> gesuchter String beginnt mit "/" und dann Text
([^\?] --> nicht so richtig klar!!
+)/ --> jeder beliebiger Text kann folgen

vielleicht hast Du ja für den mittleren Teil eine Erklärung (und ist meine Erklärung überhaupt richtig?

Nico
__________________
Nico

www.deskStop.de
Nico ist offline   Mit Zitat antworten
Alt 08.08.2003, 12:56   #6
TP-Special Mod
 
Benutzerbild von webmichl
 
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
webmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine User
Ganz einfach:

- Die Schrägstriche vorn und hinten grenzen unseren regexp-Konstrukt ein ( kann sein, daß die " zuviel des Guten sind - hab hier kein php zum testen und arbeite zu selten damit... )

- Das ^ am Anfang der regexp steht für "suche ab Stringanfang"

- Die eckigen Klammern stehen für einen "Wertebereich" eines Zeichens - also aus was sich mein Suchbegriff zusammen setzt

- Das ^ an erster Stelle innerhalb dieser Klammern negiert diesen Bereich: [x] ist wahr, wenn das Zeichen ein x ist, [^x] ist wahr, wenn das Zeichen kein x ist.

- Wir wollen alle Zeichen bis zum ? suchen - deswegen wird der Suchbereich auf beliebige Zeichen ausser dem Fragezeichen festgelegt. Durch das + sagen wir der regexp, daß das Ergebnis beliebig lang sein darf, aber aus mindestens einem Zeichen bestehen muss.

- Vor dem ? steht ein Backslash, da das Fragezeichen regexp-Sonderfunktionen besitzt und deshalb maskiert werden muss.

- Die runden Klammern bestimmen den Ergebnisbereich, der an das Trefferarray übergeben werden soll.



Noch Fragen, Kienzle?
webmichl ist offline   Mit Zitat antworten
Alt 08.08.2003, 13:04   #7
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg
hmm, also es ist ein bisschen besser jetzt. Das Verstehen meine ich.

Aber ich glaube ich muss trotzdem erstmal Siesta machen.

Vielleicht gehts mit dem Denken dann besser

Danke für Deine Mühe

Nico
__________________
Nico

www.deskStop.de
Nico ist offline   Mit Zitat antworten
Alt 08.08.2003, 18:15   #8
QCO
TP-Senior
 
Registriert seit: Mar 2003
Ort: Leipzig
QCO macht alles soweit korrekt
ich will den regexp'ler ja nicht den spaß verderben, aber eine einfaches
PHP-Code:
basename($pfad
liefert genau das gesuchte ergebnis
__________________
[httpsmog]
"I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)
QCO ist offline   Mit Zitat antworten
Alt 08.08.2003, 18:17   #9
TP-Special Mod
 
Benutzerbild von webmichl
 
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
webmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine Userwebmichl lebt für das TP und seine User
pöh!
webmichl ist offline   Mit Zitat antworten
Alt 09.08.2003, 10:45   #10
TP-Supporter
 
Benutzerbild von Nico
 
Registriert seit: Jan 2003
Ort: Dresden
Nico ist auf einem guten Weg
Aber wir wollen doch alle nur lernen

Nico
__________________
Nico

www.deskStop.de
Nico ist offline   Mit Zitat antworten
Alt 09.08.2003, 15:00   #11
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Zitat:
Original geschrieben von QCO
ich will den regexp'ler ja nicht den spaß verderben, aber eine einfaches
PHP-Code:
basename($pfad
liefert genau das gesuchte ergebnis
nene, das stimmt nicht der Spass ist schon berechtigt. basename() schneidet keine Get-Paras vom Pfad ab. Und somit bringt dir der basename-Aufruf exakt das gleiche Ergebniss, wie vor der Funktion

Eine Möglichkeit die Sache via basename zu lösen wäre z.B. so:
PHP-Code:
print_r(basename($pfad"?".$_SERVER["QUERY_STRING"])); 
...wobei das aber auch wieder Quatsch ist, da man in dieser Situation ganz einfach auf basename($_SERVER["PHP_SELF"]); gehen kann... Ist halt Situationsbedingt...

Gruss
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
String verkürzen String verkürzen
« Rel. Pfad in absoluten umwandeln | "meinten sie ... ?" »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:23 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67