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,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.01.2011, 14:39  
Neuer Benutzer
 
Registriert seit: 07.01.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
muncher befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Mit PHP auch XPATH?

Hallo zusammen,

ich habe vor kurzem wieder mit PHP angefangen. Jetzt wuerde ich gerne eine mehrsprachige Seite realisieren. Da ich fuer die Oberflaechen Sprache aber auf eine Datenbank verzichten moechte, zuviel Pflegearbeit in meinen Augen und die DB soll dem "dynamischen Inhalt" vorbehalten sein, wuerde ich das gerne ueber XML realisieren.
Da ich beruflich viel mit XSL/STX arbeite, waere mir echtes XPATH am liebsten.

Nun meine Frage, gibt es ein Modul das im PHP Standard mitgeliefert wird mit dem ich auch folgendes realisieren kann?

XML:
<?xml version="1.0" encoding="UTF-8"?>
<XML>
<LANG lang="de">
<TEXT id="1">TEST</TEXT>
<TEXT id="2">TEST</TEXT>
</LANG>
<LANG lang="en">
<TEXT id="1">TEST</TEXT>
<TEXT id="2">TEST</TEXT>
</LANG>
</XML>

Um nun ueber XPATH den richtigen TEXT zu waehlen koennte ich einfach z.B.

XSL:
<xsl:for-each select="/XML/LANG[@lang='de']/TEXT[@id='1']">
<xsl:value-of select="."/>
</xsl:for-each>

ausfuehren.
In PHP habe ich nun den simplexml, xmlreader und ein drittes Modul angetestet. Bin aber entweder am Laden von Dateien gescheitert oder konnte nur den Elementnamen nicht das Attribut parsen.
Da ich nicht wirklich "bewandert" mit PHP bin, liegt wahrscheinlich einfach daran.

Gibt es also ein Modul mit dem ich die obige Aufgabe relativ simpel erledigen koennte (am besten auch performant )?
Oder muss ich doch ueber eine DB arbeiten?!

Ein weiterer Vorteil der XML hier ist der Uebersetzungsprozess (ist nur ne private Seite aber ne XML die ich nem Freund gebe ist fixer uebersetzt als das ueber die DB zu managen..)

Schoene Gruesse und Danke fuer Eure Antworten,

muncher

Geändert von muncher (07.01.2011 um 14:43 Uhr).
muncher ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.01.2011, 14:44  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

SimpleXML

SimpleXML

Code:
$IxEmEl = simplexml_load_file('test.xml');
$IxEmEl->xPath('//Oo');

var_dump($IxEmEl);
Du solltest nur mit Arrays umgehen können, siehe Grundlagen
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 07.01.2011, 14:45  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

http://php.net/manual/de/simplexmlelement.xpath.php
Trainmaster ist offline   Mit Zitat antworten
Alt 07.01.2011, 14:48  
Neuer Benutzer
 
Registriert seit: 07.01.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
muncher befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank fuer die schnellen Antworten,

mit simplexml hatte ich es versucht, habe allerdings nur simplexml_load_string gefunden und es dann mit:

$xml = simplexml_load_string(fopen('file.xml'));

versucht. Dann werd ich mich heute abend mal mit simplexml_load_file an das gleiche Spielchen wagen.

Vielen Dank nochmals!
muncher ist offline   Mit Zitat antworten
Alt 07.01.2011, 14:52  
hts
Erfahrener Benutzer
 
Registriert seit: 07.09.2010
Beiträge: 722
PHP-Kenntnisse:
Fortgeschritten
hts befindet sich auf einem aufstrebenden Ast
Standard

Mit DOM gehts auch
http://www.php.net/manual/de/class.domxpath.php
hts ist offline   Mit Zitat antworten
Alt 07.01.2011, 15:00  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Wenn du das Rad nicht neu erfinden willst und xml willst, schau dir mal das xliff format an, gibt es auch fertige implementierungen für PHP z.b. im Zend Framework, in Symfony und bestimmt auch weitere.

Also Tool dazu gibt es dann z.b. https://open-language-tools.dev.java.net/

PHP selbst hat als extension z.b. gettext was aber nicht xml basiert ist.

Ausserdem bedenke übersetzung ist ja nicht nur einfaches "suchen und ersetzen" sondern z.b. auch so Sachen wie Plural-Formen (es gibt auch Sprachen in denen es pluralformen abhängig von der anzahl gibt, also nicht nur 1 singular und 1 plural!)
robo47 ist offline   Mit Zitat antworten
Alt 07.01.2011, 15:02  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von robo47 Beitrag anzeigen
Wenn du das Rad nicht neu erfinden willst und xml willst, schau dir mal das xliff format an, gibt es auch fertige implementierungen für PHP z.b. im Zend Framework, in Symfony und bestimmt auch weitere.

Also Tool dazu gibt es dann z.b. https://open-language-tools.dev.java.net/

PHP selbst hat als extension z.b. gettext was aber nicht xml basiert ist.

Ausserdem bedenke übersetzung ist ja nicht nur einfaches "suchen und ersetzen" sondern z.b. auch so Sachen wie Plural-Formen (es gibt auch Sprachen in denen es pluralformen abhängig von der anzahl gibt, also nicht nur 1 singular und 1 plural!)
cool, aber am Thread vorbei Oo aber volles rohr ^^
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 07.01.2011, 15:06  
Neuer Benutzer
 
Registriert seit: 07.01.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
muncher befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von robo47 Beitrag anzeigen
Wenn du das Rad nicht neu erfinden willst und xml willst, schau dir mal das xliff format an, gibt es auch fertige implementierungen für PHP z.b. im Zend Framework, in Symfony und bestimmt auch weitere.

Also Tool dazu gibt es dann z.b. https://open-language-tools.dev.java.net/

PHP selbst hat als extension z.b. gettext was aber nicht xml basiert ist.

Ausserdem bedenke übersetzung ist ja nicht nur einfaches "suchen und ersetzen" sondern z.b. auch so Sachen wie Plural-Formen (es gibt auch Sprachen in denen es pluralformen abhängig von der anzahl gibt, also nicht nur 1 singular und 1 plural!)
Hi robo47,

Nette Geschichte, aber das ist nicht ganz was ich beabsichtige. Da es mir lediglich um die Oberflaeche geht, reicht mir da ein simples Codesniplet - die ja auch angeboten wurden!

Inhaltlich wird wie gesagt der Inhalt aus der DB "generiert" - und hier wuerde ich die Sprachen und Inhalte ebenso trennen. Es ist eher ne Uebung.

Aber vielen Dank ich werds mir mal genauer ansehn - vllt mal was fuer die naechsten groesseren Uebungen?!

Schoenen Gruss,

muncher
muncher ist offline   Mit Zitat antworten
Alt 07.01.2011, 16:26  
Erfahrener Benutzer
 
Registriert seit: 17.08.2010
Beiträge: 216
PHP-Kenntnisse:
Fortgeschritten
Dormilich befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von muncher Beitrag anzeigen
$xml = simplexml_load_string(fopen('file.xml'));
dir ist aber klar, daß fopen() keinen XML string zurückliefert? das wäre ein Job für file_get_contents().

die XSLT Verarbeitung geht, glaub’ ich, nur mit DOMDocument und XSLTProcessor.
Dormilich ist offline   Mit Zitat antworten
Alt 07.01.2011, 19:54  
Neuer Benutzer
 
Registriert seit: 07.01.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
muncher befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Dormilich Beitrag anzeigen
dir ist aber klar, daß fopen() keinen XML string zurückliefert? das wäre ein Job für file_get_contents().

die XSLT Verarbeitung geht, glaub’ ich, nur mit DOMDocument und XSLTProcessor.

Nabend,

also klar war es mir nicht - ich haette es sonst nicht versucht. Aber ich denke so lernt man.. und niemals aus!

So ich habe nun folgendes erreicht:
PHP-Code:
function get_from_xml($lang,$id){
    if (
is_file('./inc/lang/cont.xml')){
        
$file='./inc/lang/cont.xml';
    } else {
        
$file='./lang/cont.xml';        
    }
    
$xml simplexml_load_file($file);
    
$output $xml->xPath('/SETS/LANG[@lang="'.$lang.'"]/T[@id="'.$id.'"]');

    
//print var_dump($output);
    
print $output[0][0];

Sicher nicht das non-plus ultra, aber fuer meine Zwecke durchaus zu gebrauchen. Da jede ID nur einmal vorkommt kann ich den Array auch direkt so ausgeben.

Versucht hatte ich auch

PHP-Code:
$output $xml->xPath('/SETS/LANG[@lang="'.$lang.'"]/T[@id="'.$id.'"]/text()'); 
Hatte erwartet nur den Text Inhalt zu ergattern aber war Pustekuchen... also dann mit Array!

Vielen Dank nochmal!
muncher ist offline   Mit Zitat antworten
Antwort


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
xpath Ergebnisse in File speichern BOSSE123 PHP Tipps 2010 12 11.11.2010 09:50
[Erledigt] Hilfe mit xpath für kml-XML chunky PHP Tipps 2010 1 19.09.2010 21:41
[Erledigt] Mit XPath im DOMDocument PHP5 und der foreach Schleife einen Element WERT hjw-kunstwerk PHP Tipps 2010 3 03.06.2010 00:07
[Erledigt] Mit xpath den nodevalue vergleichen dileso PHP Tipps 2010 2 06.05.2010 10:54
SimpleXML -> XPath cvb PHP-Fortgeschrittene 1 22.12.2009 14:16
simpleXML mit Xpath Result mit Namespace auslesen SamHeinz PHP-Fortgeschrittene 13 26.02.2009 14:46
XML Kommentar mit XPath auslesen den JavaScript, Ajax und mehr 1 08.12.2008 15:48
Error bei Benützung von xpath Arno PHP-Fortgeschrittene 2 25.04.2008 10:28
AJAX: XML im XPath ... warum denn der Wert (ff.)? Curanai HTML, Usability und Barrierefreiheit 2 31.10.2007 09:38
XPath Evaluator HStev Off-Topic Diskussionen 0 22.02.2006 16:00
Node Selection mit XPath HStev PHP Tipps 2005-2 3 12.08.2005 12:21
[Erledigt] XML mit simplexml und xpath in HTML umwandeln PHP-Fortgeschrittene 3 15.07.2005 01:39
xpath Problem PHP Tipps 2005 8 15.01.2005 18:48
XML und XPath Finkman PHP Tipps 2004 0 16.08.2004 14:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xpath php, php xpath id, get text in a node zend framework xpath, xpath performant php, xml:lang=, php xpath ersetzen, xpath php xsl, @xml:lang xpath, xpath sprache wählen php, php html parse with xpath, xpath text, html mit xpath php, wert eines attributes auslesen xpath php, xml xpath xml:lang, xpath hilfe php simplexml, php xpath xsl, php xmlreader simplexml, xslt xml php xpath, dauer des muncher dombaus, zend xpath

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:51 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