Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-04-2011, 01:29   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2010
Beiträge: 178
PHP Dom - XML String Ersetzen?

wie kann ich zuverlässig ein Sting, mit php dom klasse ersetzen. mit zuverlässig, meine ich so etwa

habs folgender string

PHP-Code:
meinHauptOrdner/meinSubOrdner/meinUnterSubOrdner/meinUrl.jpg 
ich will nur

PHP-Code:
meinUnterSubOrdner 
ersetzen.


wenn ich aber der zu ersetzender string so aussuche

PHP-Code:
$stringZuErsetzen$myString->getElementsByTagName('knote')->item(0);   
$test$stringZuErsetzen->getElementsByTagName('url')->item(0)->nodeValue;
    
$stringZuErsetzen->getElementsByTagName('url')->item(0)->nodeValue str_replace($altString,$neuString$test); 
es klappt mit ersetzen.

dass problem aber, wenn ich so ein url habe, das ich erseten will(z.B ich will /a/, nur a ersetzen will)

PHP-Code:
meinHauptOrdner/meinSubOrdner/a/meinUrl.jpg 

es wird alle buchstaben a ersetz.

kenn jemand, ein weg wie man gezielt, ein string, der in ein bestimmte breich lieg, zu ersetzen.


danke vorraus
beto2010 ist offline   Mit Zitat antworten
Alt 24-04-2011, 13:52   #2 (permalink)
Neuer User
 
Registriert seit: Aug 2010
Beiträge: 178
niemand ein idee?

wie kann ich am besten bei dem problem vor gehen?

ist es möglich der url, der ersetzt wird, erts mal ab dem breich exploten wird, dann zu ersetzen?
beto2010 ist offline   Mit Zitat antworten
Alt 24-04-2011, 14:40   #3 (permalink)
Crème brûlée
 
Registriert seit: Jan 2006
Ort: Düsseldorf
Beiträge: 719
Das sieht nach einem Fall für Regular Expressions aus. Schau dir die doch mal etwas näher an.
laxersaz ist offline   Mit Zitat antworten
Alt 24-04-2011, 17:57   #4 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.499
Hi beto,

wenn ich dich richtig verstanden habe sollte das so klappen.
PHP-Code:
<?php
$zeichenkette 
'meinHauptOrdner/meinSubOrdner/meinUnterSubOrdner/meinUrl.jpg';
$suchmuster '/(.*\\/)*(.*?)(\\/.*?)$/i';
$ersetzung '${1}andererUnterOrdner${3}';
echo 
preg_replace($suchmuster$ersetzung$zeichenkette);
?>
mfg

sx

Geändert von shin10 (24-04-2011 um 18:00 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 26-04-2011, 14:15   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2010
Beiträge: 178
Zitat:
Zitat von shin10 Beitrag anzeigen
Hi beto,

wenn ich dich richtig verstanden habe sollte das so klappen.
PHP-Code:
<?php
$zeichenkette 
'meinHauptOrdner/meinSubOrdner/meinUnterSubOrdner/meinUrl.jpg';
$suchmuster '/(.*\\/)*(.*?)(\\/.*?)$/i';
$ersetzung '${1}andererUnterOrdner${3}';
echo 
preg_replace($suchmuster$ersetzung$zeichenkette);
?>
mfg

sx
danke noch einfrage
welche bedeutung haben die zahlen hier

PHP-Code:
$ersetzung '${1}andererUnterOrdner${3}'
beto2010 ist offline   Mit Zitat antworten
Alt 26-04-2011, 14:20   #6 (permalink)
Crème brûlée
 
Registriert seit: Jan 2006
Ort: Düsseldorf
Beiträge: 719
Das ist das erste und das dritte Suchergebnis der Regular Expression, also in diesem Fall quasi, was vor und nach dem zu ersetzenden String steht.
laxersaz ist offline   Mit Zitat antworten
Alt 26-04-2011, 14:27   #7 (permalink)
Neuer User
 
Registriert seit: Aug 2010
Beiträge: 178
Zitat:
Zitat von laxersaz Beitrag anzeigen
Das ist das erste und das dritte Suchergebnis der Regular Expression, also in diesem Fall quasi, was vor und nach dem zu ersetzenden String steht.
danke ich werde mal genauer Regular Expression anschauen.
beto2010 ist offline   Mit Zitat antworten
Alt 26-04-2011, 15:50   #8 (permalink)
Neuer User
 
Registriert seit: Aug 2010
Beiträge: 178
was macht man, wenn man immer wider ein ebene tiefe gehen will. muss man demetsprechend der suchmuster anpassen oder?

oberige bsp. löste mann wie folgt.
PHP-Code:
<?php
$zeichenkette 
'meinHauptOrdner/meinSubOrdner/meinUnterSubOrdner/meinUrl.jpg';
$suchmuster '/(.*\\/)*(.*?)(\\/.*?)$/i';
$ersetzung '${1}andererUnterOrdner${3}';
echo 
preg_replace($suchmuster$ersetzung$zeichenkette);
?>

wenn ich aber so ein zeichenkette habe
PHP-Code:
$zeichenkette 'meinHauptOrdner/meinSubOrdner/meinUnterSubOrdner/tiefereOrdner/meinUrl.jpg'
hier will ich wider "meinUnterSubOrdner" string ersetzen. dafür muss ich neue suchmuster erstellen, weil mit obere geht nicht.
beto2010 ist offline   Mit Zitat antworten
Alt 26-04-2011, 16:26   #9 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.499
Ungetestet, aber das sollte gehen.
PHP-Code:
$suchmuster '/(.*\\/)*(.*?)(\\/.*?\\/.*?)$/i'
shin10 ist offline   Mit Zitat antworten
Alt 27-04-2011, 12:26   #10 (permalink)
Neuer User
 
Registriert seit: Aug 2010
Beiträge: 178
Zitat:
Zitat von shin10 Beitrag anzeigen
Ungetestet, aber das sollte gehen.
PHP-Code:
$suchmuster '/(.*\\/)*(.*?)(\\/.*?\\/.*?)$/i'
danke klappt.

aber irgend wie begreife ich immer noch nicht wie man, vorgeht.

wenn man so ein string hat

PHP-Code:
stringTeil0/stringTeil1/StringTeil2/.../meinDatei.jpg 
wie muss ich vor gehen, bzw. wie ermittelt man suchmuster, für beliebige stringTeil.

oben für string teils 3&4 war das. aber irgend wie erkenne ich kein "methode" wie man vorgeht.

wenn z.b ich diesmal dies string ändern will

PHP-Code:
stringTeil0/stringTeil1/StringTeil2/.../meinDatei.jpg 
und zwar der stringTeil1

PHP-Code:
stringTeil0/dieseStingTeilAndern/StringTeil2/.../meinDatei.jpg 
ersetzen will

habs so versucht

PHP-Code:
<?php
$zeichenkette 
'stringTeil0/stingTeil1/StringTeil2/StringTeil3/StringTeil4/StringTeil5/StringTeil6/meinDatei.jpg';
$suchmuster '/(.*\\/)*(.*?)(\\/.*?)$/i';
$ersetzung '${1}dieseStingGeandert${2}';
echo 
preg_replace($suchmuster$ersetzung$zeichenkette);
?>
dann geht es nicht.

wie kann man es sich am besten beibringen & aneignen.
beto2010 ist offline   Mit Zitat antworten
Alt 27-04-2011, 16:01   #11 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.499
Eigentlich ist es ganz simpel. Ich beschränke mich mal auf das was ich verwendet habe:

1.
- Ein Punkt (.) ist ein beliebiges Zeichen; kann alles sein
- Ein Asterisk/Sternchen (*) bedeutet beliebig oft
-> .* heißt also beliebig viele Zeichen (also im Prinzip alles)

- Wenn du nach einem Slash (/) suchen möchtest, dann musst du das escapen, weil der Suchstring zwischen zwei Slashes steht (Wie man ja auch ein Anführungszeichen im String escapen muss "\"") Das macht man auch mit einem Backslash, aber da der Backslash in einem RegExp auch escaped werden muss, braucht man in dem Fall zwei (\\/)
-> .*\\/ bedeutet also beliebig viele Zeichen, bis zu einem /

- Das Sternchen (*) ist aber "gierig" (greedy), sucht so viele wie möglich. Bei a/b/c/d würde dir .*\\/ das Ergebnis a/b/c/ zurückgeben, weil er versucht so viel wie möglich zusammenzufassen.
- mit einem Fragezeichen (?) kannst du auf nicht gierig umschalten. .*?\\/ sucht also nur bis zum ersten Slash. Bei a/b/c/d würde dir .*?\\/ das Ergebnis a/ zurückgeben.

2.
Die Klammern beschreiben eine Gruppe. Wenn du etwas als Gruppe zusammenfasst, dann kannst du mit Hilfe von ${1}, ${2}, ${3} ... die Gruppe im Ersetzungsstring einbauen/ausgeben.

3.
Dann ist da noch eine Sache: ^ ist der Anfang von einem String und $ das Ende. Ich habe das $ ganz hinten im Suchmuster, daher sucht er bei mir von hinten! (Ich dachte nämlich, dass du den jeweils letzten bzw. vorletzten Ordner ändern möchtest - da lag ich wohl falsch)


Mein Suchstring bedeutet im Prinzip folgendes:


Ich hoffe das ist so halbwegs verständlich. Ich wüsste gerade nicht, wie ich es besser verdeutlichen könnte.

mfg

sx
Angehängte Grafiken
Dateityp: jpg regexp.jpg (84,8 KB, 16x aufgerufen)

Geändert von shin10 (27-04-2011 um 16:14 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 27-04-2011, 16:05   #12 (permalink)
Crème brûlée
 
Registriert seit: Jan 2006
Ort: Düsseldorf
Beiträge: 719
Super erklärt!
laxersaz ist offline   Mit Zitat antworten
Alt 27-04-2011, 16:32   #13 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.499
Das freut mich

Reguläre Ausdrücke sind so ne Sache in die man sich erstmal reinfinden muss, aber man möchte danach nicht mehr ohne.
Da lohnt es sich allemal ein Bild für zu machen.

Das "mystischste Zauberzeug" das mir beim Programmieren je begegnet ist. Ich hoffe es hilft weiter.

mfg

sx
shin10 ist offline   Mit Zitat antworten
Alt 27-04-2011, 19:00   #14 (permalink)
Neuer User
 
Registriert seit: Aug 2010
Beiträge: 178
Thumbs up

Zitat:
Zitat von shin10 Beitrag anzeigen
Das freut mich

Reguläre Ausdrücke sind so ne Sache in die man sich erstmal reinfinden muss, aber man möchte danach nicht mehr ohne.
Da lohnt es sich allemal ein Bild für zu machen.

Das "mystischste Zauberzeug" das mir beim Programmieren je begegnet ist. Ich hoffe es hilft weiter.

mfg

sx

nach diese ausführliche erklärung & beschreibung, muss es helfen


danke viel mals

edit :
PHP-Code:
'/(.*?\\/)(.*?)(\\/.*)/'
ersetzt genau, der zweite string.

Geändert von beto2010 (27-04-2011 um 19:19 Uhr)
beto2010 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

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 sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zeichen ersetzen in String TheGonz ActionScript 3 3 21-01-2010 19:10
String ersetzen RhettButler Flash 8 4 20-06-2007 15:23
Variable in String ersetzen Utopian Flash 8 1 13-09-2006 12:44
[PHP] 2Zeichen in String ersetzen? Magnuss PHP und MySQL 2 16-09-2005 10:15
Leerzeichen in String ersetzen Fried-Chickin ActionScript 1 2 02-03-2003 15:26


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:22 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele