php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Jobs und Projekte > Projekthilfe
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


Projekthilfe Hier könnt Ihr eine Art Projekthilfe anfordern. Unter Projekthilfe verstehen wir Angebote bei denen KEIN Geld gezahlt werden kann.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #31 (permalink)  
Alt 18-06-2008, 14:32
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Langsam weiss ich echt nicht mehr, was du willst, die Teile, die nicht Teil des Regex sind, werden doch unverändert ausgegeben, da brauchst du dich gar nicht drum zu kümmern. Also genügt für deinen Text
PHP-Code:
function manipulate($str) {
    
$str preg_replace('|<div class="texth1">(.+)</div>|U'
                        
'<dt>$1</dt>'
                        
preg_replace('|<div class="silber">(.*)</div>|U'
                                        
'<dd>$1</dd>'
                                        
$str
                        
)
    );
    return 
$str;

Wenn nicht, dann hast du einen anderen Text als der gezeigte
__________________
Gruss
H2O
Mit Zitat antworten
  #32 (permalink)  
Alt 18-06-2008, 14:48
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo H2O.

Schau Dir doch mal folgende Seite mit dem Ergebnis der Operation an:
http://www.santodaimeportal.de/test/test38.php

Hier siehst Du den Quellcode:
http://www.santodaimeportal.de/test/test38a.php

Es fehlt die Leerzeile, also das <br /> nach dem zweiten Suchstring.

Gruß
Estrela
Mit Zitat antworten
  #33 (permalink)  
Alt 18-06-2008, 14:49
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ähm, ich hatte es schon erwähnt, aber scheinbar wurde es nicht wahrgenommen. Jetzt habe ich es sogar schriftlich vom W3C Validator:
Angesetzt auf diesen HTML-Code
Code:
<dl>
    <dt>foo</dt>
    <dd>bar</dd>
    <br />
    <dt>foo</dt>
    <dd>bar</dd>
</dl>
schreit er mir in knalligem Rot entgegen
Zitat:
document type does not allow element "br" here; missing one of "dt", "dd" start-tag.
Was ihr da versucht hinzubekommen ist also absolut sinnlos. Entweder bleibt ihr bei DIVs und kleckert BRs dazwischen (dann wäre das Problem erledigt, denn das ist ja der Ist-Zustand) oder ihr bemüht euch weiterhin um eine Erstetzung der DIVs durch eine DL, dann aber bitteschön ohne BRs wo sie nicht hingehören.

EDIT:
Bzgl. des Links: Die BRs sind da, aber der Browser mag sie an dieser Stelle eben nicht und rendert sie nicht. q.e.d.
Übrigens vermisse ich da auch DL-Tags.


Geändert von onemorenerd (18-06-2008 um 14:53 Uhr)
Mit Zitat antworten
  #34 (permalink)  
Alt 18-06-2008, 14:57
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo onemorenerd.

Ach so, in einer dl sind keine <br /> erlaubt.
Jetzt, wo Du es sagst, hört sich das ja auch logisch an.

Dann kann ich nicht mit dl arbeiten, weil ja dringend die zugrunde liegende Struktur erhalten bleiben muß.

Dann werde ich wohl besser mit <p> oder <span> arbeiten müssen.

Danke für Deine Aufmerksamkeit.

Gruß
Estrela

Edit: Oder aus jedem Block eine eigene dl.

Geändert von Estrela (18-06-2008 um 15:00 Uhr)
Mit Zitat antworten
  #35 (permalink)  
Alt 18-06-2008, 15:02
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Es fehlt die Leerzeile, also das <br /> nach dem zweiten Suchstring.
Eine Leerzeile in HTML besteht aber normalerweise aus <br /><br />
Es ist nicht valide aber funzt
Code:
<dl>
    <dt>foo</dt>
    <dd>bar</dd>
    <br />
    <br />
    <dt>foo</dt>
    <dd>bar</dd>
</dl>
<dl>
    <dt>foo</dt>
    <dd>bar</dd>
    <br />
    <dt>foo</dt>
    <dd>bar</dd>
</dl>
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #36 (permalink)  
Alt 18-06-2008, 15:04
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Nene, du kannst schon mit DL/DT/DD arbeiten. Entweder so
Code:
<dl>
    <dt>foo</dt>
    <dd>bar<br /></dd>
    <dt>foo</dt>
    <dd>bar</dd>
</dl>
oder so (besser!):
Code:
.space { padding-bottom: 1em; }
<dl>
    <dt>foo</dt>
    <dd class="space">bar</dd>
    <dt>foo</dt>
    <dd>bar</dd>
</dl>
Mit Zitat antworten
  #37 (permalink)  
Alt 18-06-2008, 15:22
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Estrela
Oder aus jedem Block eine eigene dl.
Genau:
PHP-Code:
$txt file('input.txt');

foreach(
$txt as $zeile){
    echo 
manipulate($zeile);
}
echo 
"</dl>\n";

function 
manipulate($str) {
    
$str preg_replace('|<div class="texth1">(.+)</div>|U'
                        
'<dt>$1</dt>'
                        
preg_replace('|<div class="silber">(.*)</div>|U'
                                        
'<dd>$1</dd>'
                                        
$str
                        
)
    );
    if(
preg_match('|</h1>|Ui'$str)){
        
$str .= "<dl>\n";
    }
    
$str preg_replace('|<br\\s*/?>|Ui'"\n</dl>\n<dl>"$str);
    return 
$str;

__________________
Gruss
H2O
Mit Zitat antworten
  #38 (permalink)  
Alt 18-06-2008, 16:32
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo jahlives.
Da halte ich es lieber mit TobiaZ, der es ungefähr so sagte, "Nicht alles, was machbar ist, ist auch richtig."
Ich möchte nicht ohne Not invaliden Code erstellen.
Und meines Wissens nach ist der erzwungene Zeilenumbruch <br /> eines der wenigen Tags, das einzeln einsetzbar ist.

@onemorenerd
Auch keine schlechte Idee, das <br />zwischen die dd´s zu stellen, falls das valide ist.
Mit class wollte ich an dieser Stelle nicht arbeiten, hab ich ja schon, um den Texten mehr Gewicht zu geben.
Gelernt habe ich gerade von Dir, das ein gelegentlicher Blick in den Quellcode einen echt weiterbringen kann.

@H2O
Deine freundlichen Fehler habe ich gefunden.
Fast perfekte Lösung. Kann aber vielleicht auch an meinem Zusammenbauen liegen.
Die Anzeige erfolgt jetzt wie gewünscht, aber mit zwei Warnungen:

Warning: file($filename_pattern) [function.file]: failed to open stream: No such file or directory in /home/santodai/public_html/test/test38.php on line 17

Warning: Invalid argument supplied for foreach() in /home/santodai/public_html/test/test38.php on line 19

Die Codezeilen:

PHP-Code:
// Pfad zu den Dateien
$path 'php/';
// nur Dateien öffnen, die diesem Muster entsprechen //Zeile 17
$filename_pattern '*.php';
$txt file('$filename_pattern');                                     // Zeile 19

foreach($txt as $zeile){
    echo 
manipulate($zeile); 
Die erste Warnung sagt ja, das die Datei oder der Ordner nicht existieren, aber die Bearbeitung funktioniert ja, darum verstehe ich die Warnung nicht.

Ist ja schön, mal zu sehen, wie relativ einfach Text in die erste Zeile einzufügen ist. Bei der letzten sieht das schon etwas anders aus.

Gruß
Estrela
Mit Zitat antworten
  #39 (permalink)  
Alt 18-06-2008, 16:37
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Grundlagen nachholen: Im Gegensatz zu Zeichenketten in Doublequotes (") findet in Zeichenketten, die durch Singlequotes (') delimiert sind, keine Variablen-Interpolation statt. Das heisst konkret, dass in der Zeichenkette '$filename_pattern' der String $filename_pattern steht und nicht der Wert der Variablen.
Darüber hinaus sei anzumerken, dass in diesem Fall weder Single- noch Doublequotes von Nöten sind.

Grüße

Geändert von Griecherus (18-06-2008 um 16:41 Uhr)
Mit Zitat antworten
  #40 (permalink)  
Alt 18-06-2008, 16:46
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo Griecherus.

Habe gerade mal die Hochzeichen ausgetauscht und die selben Fehlermeldungen erhalten.

Demnach scheint es egal zu sein, welche Hochzeichen ich verwende, weil ja sowol das Ergebnis als auch die Fehlermeldungen die gleichen sind. Deine Ausführungen hatte ich aber auch schon gelesen, ich bin ja noch mit PHP ganz am Anfang.

Gruß
Estrela

Edit/
Vielleicht beziehen sich die Fehlermeldungen ja auf . und .. ,
die ich am Anfang schon bei der Auflistung des Inhaltes des Arbeitsordners gesehen habe?

Geändert von Estrela (18-06-2008 um 16:56 Uhr)
Mit Zitat antworten
  #41 (permalink)  
Alt 18-06-2008, 16:50
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du definierst ja auch $path, das offensichtlich zu dem Ordner zeigt, in dem sich die Ziel-Dateien befindet, und lässt es danach unberührt. Ich mutmaße mal, dass der korrekte Pfad
Code:
php/*.php
und nicht
Code:
*.php
ist. Mit letzterem suchst du am selben Ort, an dem sich die verarbeitende Datei befindet. Das * als Wildcard Zeichen ist übrigens eher etwas für die Funktion glob().

Der Korrektheit halber: Es ist natürlich nicht egal, welche Zeichenketten-Begrenzer du verwendest. Nur, weil beide in deinem Fall nicht zum Ergebnis führen, macht sie das noch lange nicht zu dem oder den Schuldigen.

Geändert von Griecherus (18-06-2008 um 17:03 Uhr)
Mit Zitat antworten
  #42 (permalink)  
Alt 18-06-2008, 17:01
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

«".php» ist natürlich kein Filename, daher ist auch die Fehlermeldung klar. Und wo du Fehler gefunden haben willst, weiss ich auch nicht. Ich habe genau deinen Code nach «input.txt» kopiert, und es ist genau das rausgekommen, was du haben willst:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DtD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml1" lang="en"  xml:lang="en">
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	<link rel='stylesheet' type='text/css' href="./styles.css" />
	<title>TESTSCRIPT</title>
</head>
<body>
<h1>01. Instrução</h1> 
<dl>
<dt>Agora mesmo</dt>
 <dd>Jetzt genau</dd>
 <dt>Recebi esta Instrução</dt>
 <dd>Erhalte diese Instruktion</dd>
 <dt>Para dar aos meus Irmãos</dt>
 <dd>Um zu geben meinen Geschwistern</dd>
 <dt>Para todos se lembrar</dt>
 <dd>Damit alle sich erinnern</dd>
</dl>
<dl>
<dt>Louvado seja</dt>
 <dd>Gelobt sei</dd>
 <dt>Bendito louvado está</dt>
 <dd>Gesegnet und gelobt ist</dd>
 <dt>Bendito louvado seja</dt>
 <dd>Gesegnet und gelobt sei</dd>
 <dt>Aquele, que me escutar</dt>
 <dd>Jener, der mich hört</dd>
</dl>
<dl>
<dt>O meu Amor</dt>
 <dd>Meine Liebe</dd>
 <dt>Está no Cume de Jesus</dt>
 <dd>Ist auf dem Gipfel mit Jesus</dd>
....
__________________
Gruss
H2O

Geändert von H2O (18-06-2008 um 17:03 Uhr)
Mit Zitat antworten
  #43 (permalink)  
Alt 18-06-2008, 17:23
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo H2O.

Die einfachen Fehler waren:

Du hast im ersten echo </dl> und mit der letzten Anweisung preg_replace zum Schluß das <dl> eingefügt. Kleinigkeit.

Gruß
Estrela
Mit Zitat antworten
  #44 (permalink)  
Alt 18-06-2008, 17:45
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo.

Ich schlage vor, die Fehlermeldungen erst mal außen vor zu lassen. Die Aufgabe wird ja erstmal erfüllt. Ich möchte sowieso am Ende den Code nochmal durchsprechen, um möglichst viel daraus zu lernen.

Jetzt zum weiteren vorgehen.
Verständnisfrage: Bis jetzt haben Wir ja den modifizierten Text virtuell vorliegen, der dann mit echo auf den Bildschirm gebracht wird. Richtig?

Wenn ja, dann müßte jetzt die Datei geöffnet werden und der modifizierte Text in die Datei geschrieben werden und die Datei gespeichert werden.

Durch die foreach Schleife werden alle Dateien im Ordner abgearbeitet.

Benötigte Befehle:
fopen w+
fclose

Frage: Wenn die Datei mit w+ geöffnet ist, wie füge ich den modifizierten Text ein?
Kann ich danach die Datei einfach schließen oder muß ich noch speichern?

Gruß
Estrela
Mit Zitat antworten
  #45 (permalink)  
Alt 18-06-2008, 17:58
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Steht dir PHP5 zur Verfügung, gehts ganz leicht per file_put_contents(). Andernfalls steht alles Nötige über das Öffnen, Scheiben und Schließen einer Datei doch im PHP-Manual, z.B. in der Spezifikation zu fwrite(), anschaulich an einem Beispiel.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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