Portal > Foren > PHP > PHP-Programmierung > preg_match Ergebnisverwendung
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 12.12.2005, 10:16 Nach oben    #1
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 238
Standard

Hallo,

der Code aus dem Tut mit dem eigenen Template hat mich mal besonders
Interessiert.

http://forum.developers-guide.net/showthread.php?t=684

PHP-Code:

// Includes ersetzen ( {include file="..."} )
while(preg_match("/".$this->leftDelimiterF."include file=\"(.*)\.(.*)\"".$this->rightDelimiterF."/isUe"$this->template)) {
    
$this->template preg_replace("/".$this->leftDelimiterF."include file=\"(.*)\.(.*)\"".$this->rightDelimiterF."/isUe""file_get_contents(\$this->templateDir.'\\1'.'.'.'\\2')"$this->template);
    } 
Und zwar folgendes:

PHP-Code:
"file_get_contents(\$this->templateDir.'\\1'.'.'.'\\2')" 
Das sit mir relativ neu und ich kann das gut verwenden.

Interessant ist hier das wärend des Befehls das Ergebnis im selben schon
verwendet werden kann.

Wie Funktioniert das mit den \\1.'.'.' ....

Sonst würde ich ja erstmal dannach suchen und mit dem Ergenis weiter
arbeiten. Und nicht wärend der aktion, das ist Interessant.

- Überarbeitet, Fehler behoben - Frage besteht noch ! -
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!

Geändert von DasMööp (12.12.2005 um 13:34 Uhr)
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.12.2005, 15:57 Nach oben    #2
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Code:
$this->templateDir . '\\1' . '.' . '\\2'
So wirds denk ich klarer. Drei Punkte zum Verketten der Strings, und das '.' stellt den Punkt zwischen Dateiname (\\1) und Dateierweiterung (\\2) dar.
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.12.2005, 17:31 Nach oben    #3
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 238
Standard

Ah, ok *lol* ... dann ist das klar. *rolleye*

merci !
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.11.2006, 18:16 Nach oben    #4
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 238
Standard

Hallo,

warum bekomme ich hier einen Fehler ? Auch wenn er es umsetzt ?

private $stringTable = 'v3_';
private $leftDelimiter = '\{\$';
private $rightDelimiter = '\$\}';

$sql = 'SELECT * FROM {$user$} {$forum$} WHERE id';
(nur zum Testen)

PHP-Code:
        while (preg_match("/".$this->left."(.*)".$this->right."/isUe"$sql)) {
            
$sql preg_replace("/".$this->left."(.*)".$this->right."/isUe",$this->table."\\1",$sql);
        } 
Ergebnis:

Notice: Use of undefined constant v3_user - assumed 'v3_user' in C:\Programme\xampp\xampp\htdocs\ejma_001\system\my sql.inc.php5(44) : regexp code on line 1

Notice: Use of undefined constant v3_forum - assumed 'v3_forum' in C:\Programme\xampp\xampp\htdocs\ejma_001\system\my sql.inc.php5(44) : regexp code on line 1
Array ( [0] => SELECT * FROM v3_user v3_forum WHERE id )

Ich verstehe es nicht !? Könnte mir jemand nen Stups geben
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!

Geändert von DasMööp (20.11.2006 um 14:18 Uhr) Grund: Ergänzung
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.11.2006, 18:17 Nach oben    #5
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Weil du vermutlich soetwas machst:
$array[v3_user] anstatt der korrekten Form
$array['v3_user']

Oder du schreibst
v3_user anstatt von $v3_user
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 14:18 Nach oben    #6
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 238
Standard

Ähm ... versteh ich grad gar nich ?
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 14:45 Nach oben    #7
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 459
Standard

Du hast wahrscheinlich irgendwo sowas stehen:
$array_name[v3_user];

Nun denkt PHP, dass v3_user eine Konstante sein soll.. die existiert aber nicht.
Du meinst wahrscheinlich auch ein Array-Key und keine Konstante, deshalb musst du v3_user in Hochkommata setzen:
$array_name['v3_user'];
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 15:29 Nach oben    #8
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Ich will nicht stören, aber preg_match() mit Modifer e gibt es nicht
weitermachen ...
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 15:30 Nach oben    #9
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 238
Standard

Ich verstehe nur Bahnhof ? Wo habe ich denn ein Array ?

String -> $sql = 'SELECT * FROM {$user$} {$forum$} WHERE id';

PHP-Code:
class xyz {

    private 
$stringTable 'v3_';
    private 
$leftDelimiter '\{\$';
    private 
$rightDelimiter '\$\}';

    public function 
dbquery($sql)
    {
        while (
preg_match("/".$this->leftDelimiter."(.*)".$this->rightDelimiter."/isU"$sql)) {
            
$sql preg_replace("/".$this->leftDelimiter."(.*)".$this->rightDelimiter."/isU",$this->stringTable."\\1",$sql);
        }

        return 
$sql
    
}

??? Ich kapier es ned ...
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 15:52 Nach oben    #10
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 459
Standard

Das mit dem Array war nur ein Bespiel. Irgendwo hast die Hochkommata vergessen, sodass PHP denkt, dass es sich um eine Konstante handelt.
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:29 Nach oben    #11
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 238
Standard

Hmm... versucht habe ich schon alles mein Fazit es liegt an dem

mixed preg_replace ( mixed Suchmuster, mixed Ersatz, mixed Zeichenkette [, int Limit [, int &Anzahl]] )

der bei mir wie folgt belegt ist:

preg_replace("/".$this->leftDelimiter."(.*)".$this->rightDelimiter."/isU",$this->stringTable."\\1",$sql);

er bringt mir hier den Fehler egal ob mit "" oder '' wenn es leer ist dann
kommt die Notice nicht !?

$sql = preg_replace("/".$this->leftDelimiter."(.*)".$this->rightDelimiter."/isUe","xx",$sql);

oder

$sql = preg_replace("/".$this->leftDelimiter."(.*)".$this->rightDelimiter."/isUe",'xx',$sql);

und ich wüsste nicht wo ich was vergessen haben sollte auch wenn es den
anschein hat !?

Ergebnis ist bei male ja richtig
SELECT * FROM xx WHERE id

*hmpf -> weiter test ^^
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!

Geändert von DasMööp (20.11.2006 um 16:40 Uhr)
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:35 Nach oben    #12
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 459
Standard

Könntest du mal das komplette Skript posten? Dann kann ich mir das mal genauer anschauen.
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:45 Nach oben    #13
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Nimm einfach den e-Modifier raus. Sonst wird der Replace-String doch ausgeführt. Ist ja Klar, dass PHP meckert, wenn er folgende Anweisung erhält:
PHP-Code:
<?php
v3_user
?>
Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:49 Nach oben    #14
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 459
Standard

Hat er doch jetzt scheinbar gemacht .. ?
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:51 Nach oben    #15
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 238
Standard

PHP-Code:
CLASS Mysql {

    private 
$arrayMysql = array();

    private 
$prefixTable 'v25_';
    private 
$left '\{';
    private 
$right '\}';
    
    private 
$dbhost 'localhost';
    private 
$dbuser 'root';
    private 
$dbpass '';
    private 
$dbname 'db1';
    
    private 
$dbConnect null;
    private 
$dbVerbindung null;
    private 
$dbSelect null;

    public function 
__construct()
    {
        
$this->dbConnect($this->dbhost,$this->dbuser,$this->dbpass,$this->dbname);
    }

    private function 
dbConnect($dbhost,$dbuser,$dbpass,$dbname)
    {
        
$this->dbVerbindung mysql_connect($dbhost,$dbuser,$dbpass) OR DIE ('MySQL Verbindung nicht möglich!');
        
$this->dbSelect($dbname);
    }

    private function 
dbSelect($dbname)
    {
        
mysql_select_db($dbname) OR DIE ('Datenbank konnte nicht ausgewählt werden!');
    }

    public function 
dbquery($sql)
    {
        while (
preg_match("/".$this->left."(.*)".$this->right."/isU"$sql)) {
            
$sql preg_replace("/".$this->left."(.*)".$this->right."/isU",$this->prefixTable."\\1",$sql);
        }

#        $res = mysql_query($sql, $this->dbVerbindung) OR DIE ('Die Abfrage ist Fehlerhaft! <br>'.$sql.'<br>'. mysql_error());

         
return $sql;
    }


aufruf aus anderer Klasse :

$sql = 'SELECT * FROM {user} WHERE id';
$this->arrayQuery = $this->system[0][5]->dbquery($sql);

Das e war schon raus ... aber danke nochmal.

Gelöst -> (Fragt nich ... !!!)
*argh ... Fazit ist das der PhpCoder zwar per Strg-s angeblich gespeichert hat
dies aber nicht wirlich durchgeführt hatte !?
Erst mit "Save all Dokuments" hat er es übernommen *argh da kann man lange
rumtun !

Ergebnis des Fehlers hätte schon vor Stunden weg sein könen -> modifier e war
das Problem. Nur was hilft es wenn man ändert aber das File nicht gespeichert wird !

komisch ... *ärger
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!

Geändert von DasMööp (20.11.2006 um 16:57 Uhr)
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 17:00 Nach oben    #16
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 459
Standard

Hmm funktioniert doch, nach dem du das "e" weggenommen hast..

// edit:
Achso.. dann leg' dir einen neuen Editor zu
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 17:06 Nach oben    #17
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Wozu eigentlich die Schleife? Die macht hier doch null Sinn und bremst nur das Skript.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 17:10 Nach oben    #18
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 238
Standard

Zitat:
Zitat von Corvin Beitrag anzeigen
Hmm funktioniert doch, nach dem du das "e" weggenommen hast..

// edit:
Achso.. dann leg' dir einen neuen Editor zu

Jau ... schon vor ewigkeiten ... dann wieder rein vor lauter verzweiflung
war nicht der Tag heut ...

Wird wohl auf nen neuen Editor rauslaufen *argh

---

Ja die Schleife kommt wieder raus
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 17:16 Nach oben    #19
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 459
Standard

Wenn wir schon dabei sind.. was soll eigentlich das hier?
PHP-Code:
    public function __construct()
    {
        
$this->dbConnect($this->dbhost,$this->dbuser,$this->dbpass,$this->dbname);
    }

    private function 
dbConnect($dbhost,$dbuser,$dbpass,$dbname)
    {
        
$this->dbVerbindung mysql_connect($dbhost,$dbuser,$dbpass) OR DIE ('MySQL Verbindung nicht möglich!');
        
$this->dbSelect($dbname);
    } 
Mach das doch so:
PHP-Code:
    public function __construct()
    {
        
$this->dbConnect();
    }

    private function 
dbConnect()
    {
        
$this->dbVerbindung mysql_connect($this->dbhost,$this->dbuser,$this->dbpass) OR DIE ('MySQL Verbindung nicht möglich!');
        
$this->dbSelect($this->dbname);
    } 
Das ist imo sinnvoller.
__________________
Corvin ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 19:31 Nach oben    #20
Verplanter Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 238
Standard

ok ok ... *lach hast ja recht ... wenns mal wieder länger dauert
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:19 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45