Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > preg_match Ergebnisverwendung
Antwort
 
Themen-Optionen
Alt 12.12.2005, 10:16   Nach oben    #1
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 219
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.12.2005, 15:57   Nach oben    #2
Lars
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.12.2005, 17:31   Nach oben    #3
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 219
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.11.2006, 18:16   Nach oben    #4
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 219
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.11.2006, 18:17   Nach oben    #5
Chr!s
Erfahrener Benutzer
 
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 14:18   Nach oben    #6
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 219
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 14:45   Nach oben    #7
Corvin
Erfahrener Benutzer
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 445
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 15:29   Nach oben    #8
CIX88
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 586
Standard

Ich will nicht stören, aber preg_match() mit Modifer e gibt es nicht
weitermachen ...
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 15:30   Nach oben    #9
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 219
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 15:52   Nach oben    #10
Corvin
Erfahrener Benutzer
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 445
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:29   Nach oben    #11
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 219
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:35   Nach oben    #12
Corvin
Erfahrener Benutzer
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 445
Standard

Könntest du mal das komplette Skript posten? Dann kann ich mir das mal genauer anschauen.
__________________
Corvin ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:45   Nach oben    #13
Basti
Erfahrener Benutzer
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 784
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 gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:49   Nach oben    #14
Corvin
Erfahrener Benutzer
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 445
Standard

Hat er doch jetzt scheinbar gemacht .. ?
__________________
Corvin ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 16:51   Nach oben    #15
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 219
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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 17:00   Nach oben    #16
Corvin
Erfahrener Benutzer
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 445
Standard

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

// edit:
Achso.. dann leg' dir einen neuen Editor zu
__________________
Corvin ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.11.2006, 17:06   Nach oben    #17
Basti
Erfahrener Benutzer
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 784
Standard

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

Basti
Basti ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten