php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-08-2008, 13:13
Estrela
 Registrierter Benutzer
Links : Onlinestatus : Estrela ist offline
Registriert seit: Jun 2008
Beiträge: 165
Estrela ist zur Zeit noch ein unbeschriebenes Blatt
Standard PHP Neuling: Suchen und ersetzen funktioniert nicht wie gewünscht.

Hallo zusammen.

Ich habe hier ein Script, das Zeilen aus der Datei TabzuOrdnung2.txt einliest.
Die Zeilen in der Datei sehen wie folgendes Schema, allerdings mit Sonderzeichen, aus:
Verbtabelle.php#Verb1,Verb2,Verb3 usw, wobei die Anzahl der Verben variabel ist.
Jetzt sollen in einer Datei namens test.php nacheinander alle Platzhalter mit Verb1, Verb2 usw ersetzt werden.
Leider wird in meinem Script nur Verb1 eingesetzt und für Verb3 keine Datei angelegt.
Kann mir jemand weiterhelfen?
Hier das Script:

PHP-Code:
<?php 
error_reporting
(E_ALL); 
ini_set("display_errors""ON"); 
 
?>
<?php
$TabzO 
'TabzuOrdnung2.txt';
$Site 'test.php'
$TZ '#';
$TabzOArray file ($TabzO);
$SiteArray file_get_contents ($Site);

$chars = array    (
    
'replace' => array('A','A','A','A','a','a','a','a','Ae','ae','C','c','E','E','E','e','e',),
    
'browser' => array('Á','À','Â','Ã','á','à','â','ã','Ä','ä','Ç','ç','É','È','Ê','é','è',),
    
'filesystem' => array('%C1','%C0','%C2','%C3','%E1','%E0','%E2','%E3',),
    
'source' => array('&Aacut;','&Agrav;','&Acir;','&Atild;','&aacut;','&agrav;',),
                ); 
#Sonderzeichen gekürzt

foreach ($TabzOArray as $nr => $TzOAzeile)     { 
            
$TabzOArrayTeile explode ($TZ,$TzOAzeile);
            
$TabzOArrayTeileRechts explode (',',$TabzOArrayTeile[1]);
            foreach (
$TabzOArrayTeileRechts as $Nr => $zeile)     {
                    
$zeile2 str_replace($chars['browser'], $chars['replace'], $zeile);
                    
$zeile3 str_replace($chars['browser'], $chars['source'], $zeile);
                    echo 
$zeile."<br>";
                    echo 
$zeile2."<br>";
                    echo 
$zeile3;
                    
$SiteArray str_replace ('test1',$zeile3,$SiteArray);
                    
$SiteArray str_replace ('test2',$zeile2,$SiteArray);
                    
$SiteArray str_replace ('test3',$TabzOArrayTeile[0],$SiteArray);
                    
$zeile2 $zeile2.'.php';
                    
$schreib file_put_contents ($zeile2,$SiteArray); # Zeile 32
                                                                
}
                                            }
?>
Also nur test3 wird ordnungsgemäß ersetzt, währenddessen die Ersetzungen der Sonderzeichen keinen Erfolg hat.

Die Ausgabe der echos mit Fehlermeldungen:

verb1
verb1
verb1verb2
verb2
verb2verb3
verb3
verb3
Warning: file_put_contents(verb3 .php) [function.file-put-contents]: failed to open stream: Invalid argument in C:\Program Files\xampp\htdocs\SantoDaimePortal\test3\4.php on line 32

Gruß
Estrela

Geändert von Estrela (31-08-2008 um 13:37 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 31-08-2008, 13:29
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich würd sagen, du musst erstmal den Quelltext korrigieren, denn hier ist eindeutig ein Syntax-Fehler vorhanden..
..und du wirst ja sicher nur kopiert haben..

mfg
Edit: Kann es sein, dass $zeile2 = 'verb3 '; < da ne leertaste zuviel ist?
Lass hinter Zeile $zeile2 noch nen .'m'; oder so ausgeben um das zu überprüfen..

Geändert von Blackgreetz (31-08-2008 um 13:33 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 31-08-2008, 13:44
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 Blackgreetz.

Das erste ist erledigt, kam durch die Kürzung zustande. Danke.
Mit dem zweiten weiß ich jetzt nicht, was Du meinst.

Gruß
Estrela
Mit Zitat antworten
  #4 (permalink)  
Alt 31-08-2008, 14:38
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

In Deiner Fehlermeldung ist ein Leerzeichen im Datei-namen
Bin mir nicht sicher, ob das immer so ist (wäre komisch) ...

Warning: file_put_contents(verb3 .php) [function.file-put-contents]: failed to open stream

Deshalb solltest du $zeile2 mal ausgeben lassen und gucken, ob am ende ein Leerzeichen ist .. z.b. indem du einen buchstaben anhängst und guckst, ob der dran ist oder nicht...

Ansonsten sagt die Fehlermeldung ja, was der Grund ist, dass es nicht klappt..

mfg
Mit Zitat antworten
  #5 (permalink)  
Alt 31-08-2008, 14:55
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 Blackgreetz.

Gut beobachtet, ist mir garnicht aufgefallen. Ich konnte den Fehler beheben, indem ich in der Datei TabzuOrdnung2.txt hinter dem letzten Verb ein "," einfügte; jetzt wird auch diese Datei geschrieben.
Bleibt noch die Frage, warum die Ersetzungen mit test1+2 nicht erfolgen, sondern immer Verb1 eingesetzt wird; und zwar immer nur das erste Verb der ersten Zeile in TabzuOrdnung2.txt, es findet also kein durchwechseln statt.
Ich habe da jetzt schon verschiedene Variationen probiert, aber ich komme nicht auf den Fehler.
Kannst Du da weiterhelfen?

Gruß
Estrela

Geändert von Estrela (31-08-2008 um 15:12 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 31-08-2008, 15:11
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Debugging? Testausgaben? USW?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #7 (permalink)  
Alt 31-08-2008, 15:16
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 TobiaZ.

Die Testausgabe kannst Du oben sehen.
Ich denke, es ist eher ein Fehler in der Konstruktion, soll heißen, ich habe die Anweisung für das Durchwechseln nicht richtig konstruiert.
Wenn mir in dieser Hinsicht jemand konstruktive Hinweise geben könnte, währe das echt hilfreich.

Gruß
Estrela
Mit Zitat antworten
  #8 (permalink)  
Alt 31-08-2008, 15:21
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was ist $sitearray?

Da willst du was ersetzen .. diese Testausgabe brauch man dann wohl auch

Die anderen Sachen haben sich ja mit dem Leerzeichen erledigt..

mfg
Mit Zitat antworten
  #9 (permalink)  
Alt 31-08-2008, 15:33
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 Blackgreetz.

Die Datei test.php hat folgenden Testinhalt:

<?php include 'dat/test1'; ?>
<?php include 'text/test2'; ?>
<?php include 'tabs/test3'; ?>

Im Prinzip ist der Inhalt also an den obigen echos zu erkennen.

Gruß
Estrela
Mit Zitat antworten
  #10 (permalink)  
Alt 31-08-2008, 15:51
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Blackgreetz
Was ist $sitearray?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #11 (permalink)  
Alt 31-08-2008, 16:25
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 TobiaZ.

$SiteArray ist das Array, das durch
$SiteArray = file_get_contents ($Site); erzeugt wurde, enthält also den Inhalt der Datei test.php.
Und bis auf eine verkürzte Schreibweise sehe ich nichts auffälliges; und die Zuweisung funktioniert ja Grundsätzlich, was an der Ersetzung test3 zu ersehen ist.
Nur, das test3 ja direkt auf $TabzOArrayTeile[0] zugreift, während die Ersetzungen test1+2 auf die $zeile2+3 zugreifen, um die Modifizierungen der Sonderzeichen zu realisieren.
Und hier ist irgendwo der Fehler, weil bei dem Zugriff auf die $zeile kein Durchwechseln der Verben stattfindet.
Dabei habe ich doch die Zeile "tabelle.php#verb1,verb2,verb3," zweimal durch explode teilen lassen, so das doch mit
foreach ($TabzOArrayTeileRechts as $Nr => $zeile)
jedes Verb angesprochen sein müßte.
Oder nicht?

Ich hoffe, eure Fragestellung getroffen zu haben.

Der Fehlercode im Quellcode:

verb1<br>verb1<br>verb1<?php include 'dat/verb1'; ?>
<?php include 'text/verb1'; ?>
<?php include 'tabs/tabelle.php'; ?>verb2<br>verb2<br>verb2<?php include 'dat/verb1'; ?>
<?php include 'text/verb1'; ?>
<?php include 'tabs/tabelle.php'; ?>verb3<br>verb3<br>verb3<?php include 'dat/verb1'; ?>
<?php include 'text/verb1'; ?>
<?php include 'tabs/tabelle.php'; ?>
<br>

<br>
<br />
<b>Warning</b>: file_put_contents(
.php) [<a href='function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: Invalid argument in <b>C:\Program Files\xampp\htdocs\SantoDaimePortal\test3\4.php</b> on line <b>32</b><br />
<?php include 'dat/verb1'; ?>
<?php include 'text/verb1'; ?>
<?php include 'tabs/tabelle.php'; ?>verbb1<br>verbb1<br>verbb1<?php include 'dat/verb1'; ?>

<?php include 'text/verb1'; ?>
<?php include 'tabs/tabelle.php'; ?>verbb2<br>verbb2<br>verbb2<?php include 'dat/verb1'; ?>
<?php include 'text/verb1'; ?>
<?php include 'tabs/tabelle.php'; ?>verbb3<br>verbb3<br>verbb3<?php include 'dat/verb1'; ?>
<?php include 'text/verb1'; ?>
<?php include 'tabs/tabelle.php'; ?>
<br>
<br>
<br />
<b>Warning</b>: file_put_contents(
.php) [<a href='function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: Invalid argument in <b>C:\Program Files\xampp\htdocs\SantoDaimePortal\test3\4.php</b> on line <b>32</b><br />

// Hier das echo von $SiteArray:

<?php include 'dat/verb1'; ?>
<?php include 'text/verb1'; ?>
<?php include 'tabs/tabelle.php'; ?>



Gruß
Estrela

Geändert von Estrela (31-08-2008 um 16:33 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 31-08-2008, 18:20
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
$SiteArray ist das Array, das durch $SiteArray = file_get_contents ($Site); erzeugt wurde, enthält also den Inhalt der Datei test.php.
Und ist somt also gar kein Array!!!
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #13 (permalink)  
Alt 31-08-2008, 18:42
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 TobiaZ.

Danke für die Begriffsaufklährung.
Die Assoziation entstand wahrscheinlich durch den Befehl file, der dann ja die Zeilen des Inhaltes der entsprechenden Datei als Array zurückliefert.
Im Gegensatz dazu liefert file_get_contents einen String zurück.
Hat aber mit der Aufgabe direkt nichts zu tuen, oder?

Ich habe jetzt mal ein wenig modifiziert:
PHP-Code:
            foreach ($TabzOArrayTeileRechts as $Nr => $zeile)     {
            echo 
$TabzOArrayTeileRechts[$Nr];
                    
$zeile2 str_replace($chars['browser'], $chars['replace'], $TabzOArrayTeileRechts[$Nr]);
                    
$zeile3 str_replace($chars['browser'], $chars['source'], $TabzOArrayTeileRechts[$Nr]); 
Und das echo liefert genau die Einträge, die ich brauche.
Also wie spreche ich sie in den nachfolgenden Ersetzungszeilen an?
Das müßte doch so stimmen.

Gruß
Estrela

Geändert von Estrela (31-08-2008 um 18:53 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 31-08-2008, 18:50
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:
Zitat:
Hat aber mit der Aufgabe direkt nichts zu tuen, oder?
Vermutlich nicht, aber da dein Quellcode so unübersichtlich und schlecht dokumentiert ist - von den Variablennamen mal ganz zu schweigen - ist es echt mühselig ihn zu prüfen. Man muss praktisch Zeile für Zeile durchgehen, als sei man selbst der Parser... Das ist mir zu viel, sorry.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #15 (permalink)  
Alt 31-08-2008, 18:59
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 TobiaZ.

Ich denke mal, das die Struktur des Scriptes von Dir als Profi recht schnell erfasst wurde und hinsichtlich der Komplexität keine Schwierigkeiten macht.
Aber es ist ja nicht das erste mal, das Du kurz vor dem Ziel die Zusammenarbeit verweigerst.
Und ich wüßte jetzt nicht, was hier an dem kleinen Script groß zu dokumentieren währe.

Leztendlich würde Deine Aussage bedeuten, das Du hier Postings abgelassen hast, ohne das Script zu verstehen.

Aber Du bist ja nicht der einzige Fachkundige hier und darum hoffe ich weiter auf den entscheidenen Hinweis.

Gruß
Estrela

Geändert von Estrela (31-08-2008 um 19:03 Uhr)
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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:44 Uhr.