zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden XML in XML einbinden (serverseitig mit PHP)

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 23.12.2006, 19:21
Content-type: x/user
neuer user
Thread-Ersteller
 
Registriert seit: 26.05.2006
Beiträge: 51
X-User befindet sich auf einem aufstrebenden Ast
Standard XML in XML einbinden (serverseitig mit PHP)

Hallo!

Ich habe eine Datei 1:
Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
  <title>Testseite 1</title>
</head>
<body>
<!-- Hier Datei 2 einfügen -->
</body>
</html>
Und eine Datei 2:
Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
  <title>Testseite 2</title>
</head>
<body>
<p>Das hier ist der Beispieltext, der in Datei 1 eingebunden werden soll.</p>
</body>
</html>
Die Datei kann nicht nur aus „<p>Das hier ist der Beispieltext, der in Datei 1 eingebunden werden soll.</p>“ bestehen, da dies kein gültiges XHTML wär.

Wie binde ich nun die Datei 2 korrekt und serverseitig mit PHP in die Datei 1 ein?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 23.12.2006, 20:22
Benutzerbild von Unsk1ll3d
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 03.01.2006
Beiträge: 206
Unsk1ll3d befindet sich auf einem aufstrebenden Ast
Standard

Was ist denn Sinn und Zweck der Sache...vielleicht reicht dir für dein "Beispieltext" auch eine einfache XML-Datei?

//edit:
Ich würde es entweder per RegExp (preg) filtern, oder einen Parser dazu schreiben.
Beispiele findest du auf php.net: PHP: preg_match - Manual PHP: preg_replace - Manual usw.
__________________
Ich bin keine Signatur, ich putz hier nur
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 23.12.2006, 20:27
Neuer Benutzer
neuer user
 
Registriert seit: 21.12.2006
Beiträge: 20
jakobm befindet sich auf einem aufstrebenden Ast
Standard

Am besten Du suchst das <p>...</p> der zweiten Datei mittels regulären Ausdrücken.
Eine dazugehörende Funktion in PHP wäre preg_match.
Siehe zusätzlich im PHP Handbuch preg_match.

PHP-Code:
$string = ...; // Deine Datei 2 in $string
$pattern '/<p>.+<\/p>/'// Dies ist der reguläre Ausdruck, der nach dem <p>, </p> und den Zeichen dazwischen sucht.
preg_match($pattern$string$matches); // mit $matches wird ein Array mit den Suchergebnisse erzeugt

print_r($matches);
// Ausgabe etwa:
Array
(
    [
0] => <p>das eigentliche</p>

Edit: Jetzt hat doch wahrhaftig Unsk1ll3d geantwortet während ich noch am Schreiben war.
__________________
Jakob

Geändert von jakobm (23.12.2006 um 20:29 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 23.12.2006, 20:43
Benutzerbild von Unsk1ll3d
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 03.01.2006
Beiträge: 206
Unsk1ll3d befindet sich auf einem aufstrebenden Ast
Standard

Ich würde bei der preg_ Variante von jakobm noch die Flags setzen.
U - Ungierig
i - keinen Unterschied bei Groß & Kleinschreibung
s - . (Punkt) passt auch bei vorgehenden Freizeichen...

PHP-Code:
$string "..."// Deine Datei 2 in $string
$pattern "~<p>(.*)<\/p>~Uis"// Dies ist der reguläre Ausdruck, der nach dem <p>, </p> und den Zeichen dazwischen sucht.
preg_match($pattern$string$matches); // mit $matches wird ein Array mit den Suchergebnisse erzeugt

print_r($matches);
// Ausgabe etwa:
Array
(
    [
0] => <p>das eigentliche</p>

//edit: Hier stehts zum Nachlesen etwas genauer^^ PHP: Suchmuster-Modifikatoren - Manual
__________________
Ich bin keine Signatur, ich putz hier nur

Geändert von Unsk1ll3d (23.12.2006 um 20:47 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 23.12.2006, 20:44
Content-type: x/user
neuer user
Thread-Ersteller
 
Registriert seit: 26.05.2006
Beiträge: 51
X-User befindet sich auf einem aufstrebenden Ast
Standard Funktion

Danke. Ich habe mir mal damit eine Funktion gebastelt (noch nicht ausprobiert):
PHP-Code:
function xhtml_include($datei) {
 
$datei readfile($datei);
 
preg_match('/<body>.+<\/body>/'$datei$ergebnis);
 
preg_replace(array('<body>''</body>'), ''$ergebnis[0]);
 return(
$ergebnis[0]);

Nur sollte auch <body attribut="irgendtwas"> erkannt werden. Könnt ihr mir da ein passendes Suchmuster geben?
edit: Es funkioniert nicht korrekt Was habe ich falsch gemacht?

Geändert von X-User (23.12.2006 um 21:08 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 23.12.2006, 20:51
Benutzerbild von Unsk1ll3d
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 03.01.2006
Beiträge: 206
Unsk1ll3d befindet sich auf einem aufstrebenden Ast
Standard

Kleine Verbesserungen, sollte funktionieren
<body> ist einmalig - warum also eine class setzen?

PHP-Code:
function xhtml_include($datei){
 if(
is_file($datei)){
 
$stream=fopen($datei,"w+");
 
$string=file_get_contents($stream);
 
fclose($stream);

 
preg_match("~<body>(.*)<\/body>~Uis"$string$match);
 
preg_replace("~(<body>)~Uis",""$match[0])
 
preg_replace("~(<\/body>)~Uis",""$match[0])
 return(
$match[0])
 }

__________________
Ich bin keine Signatur, ich putz hier nur
Mit Zitat antworten
  #7 (permalink)  
Alt 23.12.2006, 21:13
Content-type: x/user
neuer user
Thread-Ersteller
 
Registriert seit: 26.05.2006
Beiträge: 51
X-User befindet sich auf einem aufstrebenden Ast
Standard

Ähm... Deine Funktion löscht meine Datei (w+ öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.)

Ich habs geschaft!

PHP-Code:
function xhtml_include($datei) {
 
$datei file_get_contents("datei.htm");
 
$datei preg_replace('~<!--(.*)-->~Uis'''$datei);
 
preg_match('~<body(.*)>(.*)<\/body>~Uis'$datei$ergebnis);
 
$ergebnis[0] = preg_replace(array('~(<body(.*)>)~Uis''~(<\/body>)~Uis'), ''$ergebnis[0]);
 
$ergebnis[0] = trim($ergebnis[0]);
 return(
$ergebnis[0]);

edit: Es geht auch mit den PHP eigenen Funktionen: PHP: Eine XML-Datei in die andere einbinden

Geändert von X-User (07.04.2007 um 23:00 Uhr)
Mit Zitat antworten
Antwort

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 are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
XML Datei in eine XHTML Datei einbinden danny.b (X)HTML 5 22.12.2008 08:06
php Datei in css webseite einbinden X5-599 Serveradministration und serverseitige Scripte 14 19.05.2008 10:52
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09
PHP: Eine XML-Datei in die andere einbinden X-User Serveradministration und serverseitige Scripte 5 29.05.2007 17:10
XML samt Untertags durch PHP ausgeben webazubi (X)HTML 0 21.06.2006 20:13


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:00 Uhr.