php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.01.2012, 19:04  
Einmensch
Gast
 
Beiträge: n/a
Standard Inhalte in XML suchen und ersetzen

Hallo PHPler,

mein Vorgänger hat eine Funktion geschrieben in der Daten aus der DB als XML ausgegeben werden, die wie folgt aufgebaut ist:
Code:
<term>
    <title>Eintrag 1</title>
    <desc>Dies ist der erste Eintrag und es gibt auch einen <a href=#testeintrag>Testeintrag</a>.</desc>
    <url>#eintrag_1</url>
    <id>367</itemid>
  </term>
  <term>
    <title>Eintrag 2</title>
    <desc>Dies ist der zweite Eintrag. Den ersten findet ihr <a href=#eintrag_1>hier</a></desc>
    <url>#eintrag_2</url>
    <id>455</id>
  </term>
  <term>
    <title>Eintrag 3</title>
    <desc>Dies ist der dritte dritte Eintrag. Link zum <a href=#eintrag_1>Eintrag 1</a> und Link zum <a href=#eintrag_2>Eintrag 2</a></desc>
    <url>#eintrag_3</url>
    <id>6473</id>
  </term>
<term>
    <title>Testeintrag</title>
    <desc>Dies ist ein Testeintrag, welches derm <a href=#eintrag_1>ersten Eintrag</a> sehr ähnelt.</desc>
    <url>#testeintrag</url>
    <id>55</id>
  </term>
Da alle Term-Tags auch über eine ID verfügen, sollen alle Anker-Links in dem "desc-Tag" statt auf die URL nun auf die IDs verweisen damit es am Ende so ausshieht:
Code:
<term>
    <title>Eintrag 1</title>
    <desc>Dies ist der erste Eintrag und es gibt auch einen <a href=#55>Testeintrag</a>.</desc>
    <url>#eintrag_1</url>
    <id>367</itemid>
  </term>
  <term>
    <title>Eintrag 2</title>
    <desc>Dies ist der zweite Eintrag. Den ersten findet ihr <a href=#367>hier</a></desc>
    <url>#eintrag_2</url>
    <id>455</id>
  </term>
  <term>
    <title>Eintrag 3</title>
    <desc>Dies ist der dritte dritte Eintrag. Link zum <a href=#367>Eintrag 1</a> und Link zum <a href=#455>Eintrag 2</a></desc>
    <url>#eintrag_3</url>
    <id>6473</id>
  </term>
<term>
    <title>Testeintrag</title>
    <desc>Dies ist ein Testeintrag, welches dem <a href=#6473>dritten Eintrag</a> sehr ähnelt.</desc>
    <url>#testeintrag</url>
    <id>55</id>
  </term>
Vor der Ausgabe als XML liegen die die Daten in einer Variable. Darin könnte ich sozusagen Manipulation vornehmen. Habe selber das letzte mal vor 5 Jahren mit PHP zu tun gehabt und ich hoffe ihr könnt mit ein paar Tipps und Anregungen geben, wie ich das am besten umsetzen könnte.

Wissenswertes vielleicht vorab.
Ich habe etwas vorgearbeitet und einen Entwurf (kein Code) erarbeitet wie ich das durchführen könnte:
Die einzelnen Schritte hatte ich mir schon aufgeschrieben:
- XML einlesen
- desc-Tag bzw. Knoten reingehen
- per RegExp Ankerlink auslesen und für Ersetzen präparieren
- Innerhalb der XML im Knoten URL nach dem Ankerlink suchen
- Wurde es gefunden, in den ID-Knoten wechseln und zum Ersetzen auslesen
- usw.

Da ist schon ne Menge Arbeit drin aber dafür muss ich mich wieder stundenlang in PHP reinlesen. Das Problem dabei ist ja auch, dass das Ganze per "echo" ausgegeben wird und nicht als XML gespeichert wird. Ich kann es auch nicht einfach zurück in die Datenbank schreiben, weil der Inhalt vielfältig anderswo verwendet wird. Ich habe quasi nur die Variable, in der die XML-Daten vor der Ausgabe liegen, zum manipulieren. Das Ganze ist auch nicht mein Entwurf und ist angeblich so historisch gewachsen.

Vielen Dank im Voraus und beste Grüße

Einmensch
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.01.2012, 19:12  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Frage: Was erwartest Du jetzt? Das Dir das jemand schreibt? Dann bist Du besser in der Scriptbörse aufgehoben.

Ansonsten schnapp Dir das Manual und fang wenigstens erst mal an, damit wir uns hier nicht wie die Dienstleister fühlen müssen. XML und Co bieten im Manual eigentlich immer fertige Trivialbeispiel zum Auslesen von Daten o.ä.

Noch ein paar Hinweise:

1. RegExpr. ist eigentlich unnötig, weil Du ja die Desc-Daten als XML vorliegen hast (siehe 2)
2. Warum eigentlich? Woher stammen diese Daten (siehe 3)
3. Je nach Herkunft kann das im XML sehr ungünstig sein:
- HTML ist nicht zwingend gültiges XML
- HTML kann fehlerhaft vom Browser verarbeitet werden, nicht aber vom XML Parser
Daher wäre es sinnvoller, Rohtext in XML als CDATA abzugrenzen http://de.selfhtml.org/xml/regeln/zeichen.htm#cdata
4. Alternativ würde ich überlegen, die Referenz nicht als a/href abzulegen, sondern mit einem speziellen Element, das später entfernt wird.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 23.01.2012, 22:05  
Einmensch
Gast
 
Beiträge: n/a
Standard

Hi,

sorry, wenn es so rüberkommt als würde ich von Euch ne fertige Lösung erwarten. Mir ging es einfach nur um Hinweise oder Anstöße um weniger Zeit mit "ungünstigen" Mitteln zu vermeiden. Ich komme aus der Java- und RoR-Ecke und bin halt nicht so versiert in PHP. Ich wollte mir nur etwas Zeit ersparen.

@nikosch
Wie auch immer, der Code ist 4 Jahre alt und kaum lesbar. Die Daten sind so wie sind und es soll speziell für die etwas andere Ausgabe überarbeitet werden.
Hättest Du vielleicht meinen Text nicht nur überflogen sondern auch gelesen, hättest Du dir die arbeiten sparen können. Die Daten kommen aus einer DB. Oben ist nur ein Auszug aus dem XML. HTML interessiert nicht meinen Auftraggeber. In der XML sind weit über 350 vollständige und gültige Term-Knoten. Ich brauche ein Suchen/Ersetzen mit Callback. Habe nicht die Möglichkeit die Daten anderweitig per SQL auszulesen. Des Weiteren, zeig mir bitte, wie ich den Ankerlink aus dem Fließtext ohne Reguläre Ausdrücke bekomme, diesen an eine Funktion übergebe, der mir dann den Inhalt der Variable durchsucht, den passenden Inhalt findet und zum Ersetzen zurückgibt.

Wie auch immer, statt den Beitrag hier zu posten hätte ich aus einem Buch vermutlich mehr gehaltvolleres bekommen. Ich beteielige mich selbst in anderen Foren und biete nach Möglichkeit Impulse zum Lösen von Problemen und schaffe keine weiteren...

BG

Einmensch

Geändert von Einmensch (23.01.2012 um 22:13 Uhr).
 
Alt 23.01.2012, 22:14  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich habe alles gelesen

Zitat:
HTML interessiert nicht meinen Auftraggeber.
Das:
PHP-Code:
Dies ist der erste Eintrag und es gibt auch einen <a href=#testeintrag>Testeintrag</a>. 
ist aber HTML. Und ich gehe davon aus, dass die Descs auch mal ausführlicher sein dürften. Wie man schon ander Farbe sieht, ist das Attribut aber ungültig und damit auch der Inhalt von Desc, weil Du eben kein CDATA definiert hast.

Zitat:
Des Weiteren, zeig mir bitte, wie ich den Ankerlink aus dem Fließtext ohne Reguläre Ausdrücke bekomme
Mit stinknormalen XML-Funktionen. simple xml oder DOM z.B. XPath nicht zu vergessen. //term/desc/a@href kann man wunderbar auflösen. Nunja, zumindest, wenn das XML gültig ist.

Zitat:
Wie auch immer, statt den Beitrag hier zu posten hätte ich aus einem Buch vermutlich mehr gehaltvolleres bekommen. Ich beteielige mich selbst in anderen Foren und biete nach Möglichkeit Impulse zum Lösen von Problemen und schaffe keine.
Weißt Du, wenn Du mir blöd kommst dann komm ich Dir auch blöd. Ich hätte den Thread auch gleich zu machen können. Fakt ist, Scriptschreibesupport machen wir hier nicht. Statt rumzukeifen, wärst Du besser beraten gewesen, wenigstens nen Ansatz zu erstellen. Angeblich hast Du ja früher schon mit PHP gearbeitet.

Zitat:
hätte ich aus einem Buch vermutlich mehr gehaltvolleres bekommen
Mein Reden.
Lerne Grundlagen | Quellensammlung


Forenrichtlinien


[MOD: Thread geschlossen]
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Thema geschlossen


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Unbekannte Werte ersetzen fan34 PHP Tipps 2010 9 19.10.2010 18:05
[Erledigt] Problem mit String ersetzen Freddy PHP Tipps 2010 5 15.05.2010 16:07
Datein suchen ink. Ordner und nach inhalten suchen und inhalte ersetzen olnet PHP Tipps 2009 25 28.12.2009 17:27
[Erledigt] Leereichen und Umlaute ersetzen thiagojonas PHP Tipps 2009 13 06.07.2009 15:03
Zeichen in allen Datensätzen ersetzen halskrause Datenbanken 3 14.03.2009 20:34
Dokument Inhalte ersetzen & speichern in PDF apas PHP Tipps 2009 2 24.02.2009 12:39
[Erledigt] RegEx: beliebige HTML Tags in String ersetzen Der Blaue Gott Balmung PHP Tipps 2008 8 13.09.2008 18:01
aus Datenbank (mySQL) mehrere Inhalte rausholen Soese PHP Tipps 2008 6 18.12.2007 22:42
MySQL Query zum Ersetzen von sonderbaren Umlauten Carino Datenbanken 13 14.05.2007 18:08
String durchsuchen und ersetzen unabhängig von Groß / KLein PHP Tipps 2006 2 09.07.2006 23:29
String ersetzen Benshee PHP Tipps 2006 4 02.04.2006 21:43
Anführungszeichen ersetzen PHP Tipps 2005-2 6 28.09.2005 20:39
[Erledigt] includ. Text ersetzen ohne vars PHP Tipps 2004 3 13.09.2004 23:16
[Erledigt] RegExp: Dynamisches Ersetzen PHP-Fortgeschrittene 5 23.07.2004 13:39
Reguläre Ausdrücke beim suchen und ersetzen Off-Topic Diskussionen 5 05.07.2004 15:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xml text ersetzen, suchen und ersetzen in .xml, kennwort in .xml finden, xml inhalte durchsuchen, xml knoten suchen und ersetzen script, xml nach text suchen und ersetzen, suchen ersetzen xml textblöcke, xml suchen ersetzen, pdf text austauschen php, suchen ersetzen php, php xml durchsuchen, suchen und ersetzen über xmls, xml text suchen ersetzen, javascript .xml auslesen ersetzen, php ausgegebenen text auf ganzer seite durchsuchen und ersetzen, .xml suchen, inhalte finden unter php, php xml datensatz mit bestimmtem wert, php bestimmten wert ersetzen xml, php xml werte ersetzen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum