php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.09.2007, 15:45  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard [gelöst :D ] regex tuts nur einmal pro zeile

hallo, ich habe mal wieder ein problem undzwar habe ich folgenden regex:

/\{(var|image|include)=([^|}]*)\|*(.*)\}/

dieser passt auf sowas:
Code:
	{include=liste} 
			{var=test|default=>leer|css=>color:red;font-size:18px;|div=>somediv}
			{image=del.gif|css=>color:red;}
mein problem jedoch, wenn ich mehrere befehle in einer zeile habe, wird nurnoch der 1. umgesetzt, da ich ein neuling im umgang mit regex bin, kann ich mir nicht erklären warum.
wenn sie untereinander stehen, gibt es keinerlei problem..

umsetzen tut preg_replace_callback, ich denke aber, dass es am regex liegt.
notyyy ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.09.2007, 16:13  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

guckst du hier:

http://www.devmag.net/webprog/regulaere_ausdruecke.htm

Modifier s
cycap ist offline  
Alt 20.09.2007, 16:16  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

nun macht er es komplett nurnoch einmal =(

ich glaube es hat mit den { und } zutun, die irgendwie ärger machen ...
notyyy ist offline  
Alt 20.09.2007, 16:36  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

achso sorry mir is grad aufgefallen das du geschrieben hast mehrere befehle in einer zeile, ups falsch gelesen sorry

guck doch mal auf die seite die ich dir gegeben hab, da steht auch alles zu den klammern
cycap ist offline  
Alt 20.09.2007, 16:57  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Was machst du denn mit dwm Regexp? Ersetzen oder nur suchen, bzw. was für eine Funktion setzst du ein?
__________________
Gruss
L
lazydog ist offline  
Alt 20.09.2007, 17:33  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard Re: regex tuts nur einmal pro zeile

@lazydog

Zitat:
Zitat von notyyy
umsetzen tut preg_replace_callback, ich denke aber, dass es am regex liegt.
cycap ist offline  
Alt 20.09.2007, 18:00  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

Hi @notyyy!
Bitte erklär das nochmal für die Projektfremde!
1)was genau du hast
2)was genau du haben willst
beachte dabei, dass wir wirklich die geanue beschreibung brauchen, um dir einen passenden regex-ausdruck, bzw ein hinweis geben zu können.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 21.09.2007, 09:49  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

okay, beschreibung bekommt ihr.

das ganze ist ein kleines selbstgeschmiedetes template system, bzw ein teil davon ...

man hat die möglichkeit in den klassen variablen zu setzten, z.b.

$array["foo"] = "wert";

im template könnte man nun {var=foo} schreiben, diese variable würde ersetzt werden ....


zudem gibt es verschiedene "parameter" z.b. könnte man auch {var=foo|default=>variable hat keinen wert|css=>color:red;|div=>divname}

eigentlich recht selbsterklärend ... default setzt einen wert falls $array['foo' == NULL
div setzt ein div drum und css setzt einen css code...

soweit geht das ganze, >> solange pro zeile nur ein objekt ersetzt wird <<
das 2,3,4,.. wird einfach ignoriert...

{var=eins}
{var=zwei}

wäre richtig und geht


{var=eins} {var=zwei}

"zwei" wird hier nun ignoriert.....
notyyy ist offline  
Alt 21.09.2007, 12:22  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Ich bin immer noch der Meinung, dass das Problem in der Callback-Funktion liegt. Den entsprechenden Aufruf und die Funktion haben wir noch nicht gesehen.
__________________
Gruss
L
lazydog ist offline  
Alt 21.09.2007, 15:38  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

hier die "wichtigen" methoden ...

PHP-Code:
function render()
    {
        
        
$this->data preg_replace_callback("/\{(var|image|css|js|include)=([^|}]*)\|*(.*)\}/S", array($this,'myrep'),$this->data);
    } 


myrep


PHP-Code:
    function myrep($elemente)
    {
        
$type $elemente[1];
        
$this->input $elemente[2];
        
$xtras $elemente[3];
        
$specials false;
        
#echo $xtras."
";
    #    nl2br(var_dump($elemente));
                
        if($xtras != "")
        {
        $xtras = explode('|',$xtras);
        #$xtras["
count"] = count($xtras);
        $specials = true;
        }
        
            switch ($type) 
            {
                    case "
var":
                            if($specials == true)
                            {
                                    foreach($xtras as $item)
                                    {
                                    $func = explode('=>',$item);
                                    
                                    if(!method_exists($this,"
tpl_var_$func[0]"))
                                    { 
                                    echo '<span id="
yahserror">Yahs: Fehler beim verarbeiten von Variabel Funktion in der bei '.$func[0].' und '.$func[1]. ' Type: VAR </span><br \>'; 
                                    }
                                    else
                                    {
                                    call_user_func(array($this,"
tpl_var_$func[0]"),$func[1]);
                                    }
                            }
                        }
                        return $this->array_buffer[$this->input]; 
                     break;
                    case "
include":
                    $path = PATH_APP_TEMPLATE.$this->input;
                    if(file_exists($path.'.tpl'))
                    {
                        return file_get_contents($path.'.tpl');
                    }
                    else
                    {
                        return '<span id="
yahserror">Yahs: Datei nicht gefunden bei '.$path.'.tpl Type: INCLUDE </span><br \>';
                    }
                     break;
                    case "
image":
                    
                            if($specials == true)
                            {
                                    foreach($xtras as $item)
                                    {
                                    $func = explode('=>',$item);
                                    
                                    if(!method_exists($this,"
tpl_image_$func[0]"))
                                    { 
                                    echo '<span id="
yahserror">Yahs: Fehler beim verarbeiten von IMAGE Funktion in der bei '.$func[0].' und '.$func[1]. ' Type: IMAGE </span><br \>'; 
                                    }
                                    else
                                    {
                                    call_user_func(array($this,"
tpl_image_$func[0]"),$func[1]);
                                    }
                                    }
                            }
                         return '<img '.$this->image_css[$this->input].' src="'.PATH_OUT_IMAGES.$this->input.'">';
                      break;
                    case "
js":
                    if(strtolower($this->input) == "
prototype") { return '<script type="text/javascript" src="'.PATH_OUT_JS_PROTOTYPE.'"></script>'; }
                    if(strtolower($this->input) == "
jquery") { return '<script type="text/javascript" src="'.PATH_OUT_JS_JQUERY.'"></script>'; }
                    return '<script type="
text/javascript" src="'.PATH_OUT_JS.$this->input.'.js"></script>';
                     break;
                    case "
css":
                    return '<link rel="
stylesheet" type="text/css"  href="'.PATH_OUT_JS.$this->input.'.css">';
                    break;
            }
        
    } 
notyyy ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] 'upload-Datei' Zeile für Zeile auslesen Felix PHP Tipps 2008 18 29.06.2008 02:55
Tabelle mit while nach 4 spalten zur nächsten zeile Supeede PHP Tipps 2008 6 10.05.2008 09:46
2 Regex in PHP kompatible Syntax übersetzen NoiZy PHP-Fortgeschrittene 6 07.04.2008 09:04
__LINE__: Falsche Zeile Jacks Rache PHP Tipps 2006 5 10.06.2006 20:20
Zeile einfügen tennessee Server, Hosting und Workstations 5 02.06.2006 21:05
RegEx findet Stringvorkommen nicht PHP Tipps 2007 6 08.12.2005 21:52
[Erledigt] Einzelne Zeile löschen PHP Tipps 2005-2 3 18.08.2005 14:03
[Erledigt] nächste Zeile einer Db auslesen? PHP Tipps 2005-2 7 01.08.2005 00:11
Regex für attribute in quelltexten robo47 PHP Tipps 2005 6 27.01.2005 18:29
Regex über mehrere zeilen PHP-Fortgeschrittene 3 25.12.2004 16:48
[Erledigt] Jede 2. Zeile eine andere Farbe. Clan-Opa PHP Tipps 2004-2 1 26.11.2004 09:00
durchlauf,zeile für zeile + update Skazi Datenbanken 10 25.11.2004 13:59
[Erledigt] Problem mit einer Website PHP Tipps 2004 12 06.08.2004 10:34
[Erledigt] Funktion MAIL() funkt nicht PHP Tipps 2004 16 11.07.2004 17:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
regex einmalig, php regex nur erste linie, regular expression über mehrere zeilen, regex nur einmal darf, regular expression ergebnis nur einmal, regex zeile auslesen, regex zeile, regex pro zeile 1 mal, regex mehrere, php regex komplette zeile, regex nur einmal matchen, regex nur für eine zeile, regex nachste zeile, regex mehrere elemente pro zeile, eine spalte in regex, regular expression nur einmal, regexp \nur einmal\, ausdruck wird nur einmal pro zeile gefunden, javascript regex komplette zeile, regex nur einmal am anfang

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:06 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.