php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.12.2004, 10:38  
Gast
 
Beiträge: n/a
Standard

@Snake: Die "Anfängersache", echo in einer Klasse zu nutzen war nur ein derzeitiges debug-Feature ... wie ich bereits geschrieben habe, war die Klasse weit davon weg, fertig zu sein.

@Waq: Ich hatte gehofft, eine Art rekursiven Weg zu finden, und obwohl dein Regex das eigentlich sein sollte, versagt er schon bei 2dimensionalen Variablen ...
Naja und das man mit solchen Sprüchen nicht viele Freunde bekommt is ja wohl klar ... nur frag ich mich wie man so eine Person dann als Moderator einsetzen kann ...
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.12.2004, 11:03  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Die Regex kannst z.B. auch folgendes machen:
/\\$(\w+)(\[\w+\])*/
In $matches[2] sollten jetzt alle Array-Klammern komplett drinstehen, also von "$foo[bar1][bar2]" das hier: "[bar1][bar2]"
Da würde ich jetzt in der callback-Funktion per substr() das erste und letzte Zeichen killen und den Rest nach "][" exploden, so dass man dieses Array erhalten sollte: array("bar1","bar2").
Dieses kann man dann iterativ oder rekursiv abarbeiten, mit einer Schleife sähe das z.B. so aus:
PHP-Code:
$variabledieichwill $GLOBALS[$matches[0]];
$dimensions = array("bar1","bar2");
foreach (
$dimensions as $key) {
  if (!
is_array($variabledieichwill)) {
    break;
  if (isset(
$variabledieichwill[$key]))
    
$variabledieichwill $variabledieichwill[$key];
  else
    
$variabledieichwill "error: undefined key '$key' in array";

So würde für jede gefundene Array-Klammer mit zugehörigem Eintrag in $dimensions geguckt werden, ob die aktuelle Variable wirklich ein Array ist und ggf. der entsprechende Wert aus dem Array genommen werden, und das für beliebigdimensionale Arrays.

Das Fehler-Handling, wenn die betreffenden Variable kein Array ist und so könnte man noch mit aussagekräftigeren Fehlermeldungen versehen... dazu müsste man aber am besten noch den aktuellen Variablennamen tracken, und nicht nur wie jetzt den Inhalt.
__________________
mod = master of disaster
Waq ist offline   Mit Zitat antworten
Alt 05.12.2004, 13:35  
Gast
 
Beiträge: n/a
Standard

Danke, das war genau die Idee die mir gefehlt hat
Endlich mal ne wirklich brauchbare Antwort ... der regex stimmt zwar nicht, aber folgender geht: /(\\$\w+)((\[\w+\])*)/ ... dann steht das gesuchte im vorletzten $matches-Element.

Und fürs fehlerhandling hab ich mir auch schon was einfallen lassen ... da ich auf die Schnelle keine Funktion gefunden hab, die mir zu nem Substring die Zeile liefert, in der er steht, hab ich sie kurzerhand selber geschrieben und lasse bei einer nicht gesetzten Variable folgenden Error triggern:
Code:
private static function getline($str,$search) {
  $str = substr($str,0,strpos($str,$search));
  return substr_count($str,"\n") + 1;  	  	
}

trigger_error("unset variable: {$matches[0]} in template: {$this->template_name} on line " . self::getline($this->template,$matches[0]),E_USER_NOTICE);
Gibts die Variable nicht, wird dieser Notice geschmissen und die Variable so drin stehen gelassen wie sie war ... und mehr Debug-Infos lassen sich nicht ausgeben, oder?
  Mit Zitat antworten
Alt 05.12.2004, 14:17  
Gast
 
Beiträge: n/a
Standard Re: Erkennung von Arrays in Strings

Zitat:
Zitat von ThTs
Also ich bastle momentan an einem sehr kleinen, auf meine Bedürfnisse zugeschnittenem Templatesystem.
Guck Dir ggf. das mal an:
http://test.php-help.info/template-2/ (Quelltexte werden angezeigt)
  Mit Zitat antworten
Alt 07.12.2004, 12:24  
Gast
 
Beiträge: n/a
Standard

Ich besuche dieses Forum inzwischen seit einer ganzen Weile und hab manchmal das Gefuehl, dass es den meisten hier nicht darum geht in irgendeiner Form zu helfen, sondern vielmehr mit ihrem scheinbar unglaublich grossen Wissen anzugeben und andere als Idioten dazustellen die Probleme aber selbst nur in den wenigsten Faellen loesen koennen.

Vielleicht sollten einige Leute mal lieber anfangen sich produktiv an den Themen zu beteiligen anstatt nur bloede Kommentare abzulassen.

Aber zurueck zum Thema:
Ich hatte das selbe Problem in meinem Formparser, wenn die Daten als Array wiederhergestellt werden sollte. Folgende Methode hat das Problem fuer mich jedoch geloest (ich hoffe ich hab alles erwischt ):

PHP-Code:
   /**
     * @param   string   $index
     * @param   array    $array
     * @return  mixed
     */
    
private function template_GetInputValue $index $array ) {
        while ( 
preg_match"#^\[?([a-z0-9_]+)\]?(.*)#i" $index $key ) ) {
            
$array = isset( $array$key[1] ] ) ? $array$key[1] ] : '' ;
            
$index $key[2];
        }

        return 
$array;
    } 
Hoffe, dass das weiterhilft,

-- red
  Mit Zitat antworten
Alt 07.12.2004, 13:00  
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Zitat:
Zitat von redeye
hab manchmal das Gefuehl, dass es den meisten hier nicht darum geht in irgendeiner Form zu helfen
Manchmal vergeht einem halt die Lust zu helfen... wobei ich nicht nachvollziehen kann, wieso Du ausgerechnet in diesem Thread darauf kommst?

Zitat:
Zitat von redeye
andere als Idioten dazustellen
Das schaffen die meist von alleine, man hilft nur ein bisserl...
Am besten sind die, die eine unverständliche Frage stellen oder nach einem Vorprogrammier-Service suchen, hier nicht die Hilfe finden, die sie suchen, und sich dann beschweren, dass wir doch alle keine Ahnung haben...

Zitat:
Zitat von redeye
die Probleme aber selbst nur in den wenigsten Faellen loesen koennen.
Ob jemand das Problem nicht lösen kann oder nicht lösen will, kannst Du nicht beurteilen.
Ausserdem ist das mit dem nicht lösen "können" hier bei denen, die ab und zu "unproduktive" Kommentare abgeben, eigentlich weniger ein Problem.

Zitat:
Zitat von redeye
Vielleicht sollten einige Leute mal lieber anfangen sich produktiv an den Themen zu beteiligen anstatt nur bloede Kommentare abzulassen.
Die meisten Kommentare sind gar nicht so blöde, nur sind sie nicht das, was der Fragesteller hören will.

Zitat:
Zitat von redeye
Hoffe, dass das weiterhilft,
Du meinst bei dem Problem, das längst gelöst ist?
__________________
mod = master of disaster
Waq ist offline   Mit Zitat antworten
Antwort


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
Mehrere Arrays summieren buggybugga PHP-Fortgeschrittene 8 22.07.2008 11:51
Mehrere Arrays unterschiedlicher Größe kombinieren querfisch PHP Tipps 2007 9 31.03.2007 21:34
Mehrere Mehrdimensionale Arrays Stefano PHP Tipps 2006 5 12.10.2006 13:18
Arrays sortieren, Bezeichnung, Preis Ticos PHP Tipps 2006 4 07.09.2006 19:37
Arrays kreuzen PHP Tipps 2006 13 08.03.2006 11:36
[Erledigt] 2 Arrays miteinander vergleichen PHP Tipps 2007 3 17.12.2005 16:54
Objektorientierter Zugriff auf Multidimensionale Arrays PHP-Fortgeschrittene 31 26.11.2005 21:46
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
doppelte Werte / Strings einer Spalte nur einmal ausgeben... Datenbanken 2 29.07.2005 12:10
zweidimensionale Arrays für Templates aufbereiten? PHP Tipps 2005 6 22.03.2005 20:49
alle Positionen eines Strings innerhalb eines Strings finden PHP Tipps 2005 8 23.02.2005 20:21
mime type erkennung bei upload? PHP Tipps 2004 3 03.11.2004 14:34
[Erledigt] Strings saeubern PHP Tipps 2004 2 12.10.2004 15:52
2 arrays in abhängigkeit ??? PHP Tipps 2004 2 11.08.2004 21:19
Werte eines Arrays in eine MySQL schreiben PHP Tipps 2004 2 28.06.2004 13:32


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:02 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.