Variablen aus Text auslesen
phchecker17
- php
Hallo zusammen,
ich hoffe, ich bekomme hier eine Antwort auf mein Problem!
Ich arbeite nur fast ausschließlich mit PHP und HTML und habe einige Variablennamen definiert. Da ich aber nicht sehr kreativ bin, heißen viele gleich, was beim einbinden von Dateien ein Problem ist.
Nun möchte ich alle Variablen aus allen meinen Dateien anzeigen lassen, eventuell ändern können.
Mein Problem dabei ist nun, dass ich keine gute / 100% funktionierende / saubere Möglichkeit finde, die Variablen aus den mit fopen eingelesenen Dateien anzuzeigen.
Bisher mache ich das so:
// Davor wird die jeweilige Datei mit fopen eingelesen
$entry = substr($array,0,strpos($array,";"));
if(strpos($entry," ")) $entry = substr($entry,0,strpos($entry," "));
if(strpos($entry,"<")) $entry = substr($entry,0,strpos($entry,"<"));
if(strpos($entry,">")) $entry = substr($entry,0,strpos($entry,">"));
if(strpos($entry,"=")) $entry = substr($entry,0,strpos($entry,"="));
if(strpos($entry,"!")) $entry = substr($entry,0,strpos($entry,"!"));
if(strpos($entry,"(")) $entry = substr($entry,0,strpos($entry,"("));
if(strpos($entry,")")) $entry = substr($entry,0,strpos($entry,")"));
if(substr($entry,-1) == ".") $entry = substr($entry,0,-1);
if($entry != "") $variablen[] = $entry;
// im Array $variablen soll dann der jeweilige variablennamen stehen
Momentan bin ich aber noch am Programmieren, also bitte keine Fehler im Code nennen, da er sowieso noch nicht funktioniert.
Vielleicht gibt es einen Befehl, den ich im 'Manual' übersehen habe.
Ich bin für jeden Tipp dankbar!
Liebe Grüße
Philipp
Hi!
Nun möchte ich alle Variablen aus allen meinen Dateien anzeigen lassen, eventuell ändern können.
Vielleicht gibt es einen Befehl, den ich im 'Manual' übersehen habe.
Wie wäre es mit dem Tokenizer. Der parst nach den PHP-Regeln und übersieht vermutlich auch keine der Variablenschreibweisen.
Lo!
Danke für den schnellen Tip.
Werde mir das in Kürze mal mit einem Freund anschauen.
Ich habe jetzt vorübergehend folgende funktionierende Lösung:
<?php
error_reporting(0);
$directory = "./";
if($_GET['directory']!="") $directory = $_GET['directory'];
$handle = opendir($directory);
while (false !== ($filename = readdir($handle))) {
if($filename != "." && $filename != ".." && $filename != "") $files[] = $directory . "/" . $filename;
}
closedir($handle);
foreach($files as $path)
{
unset($variablen);
$fp = fopen($path,"r");
$data = fread($fp,filesize($path));
fclose($fp);
$explode_array = explode("$",$data);
unset($explode_array[0]);
foreach($explode_array as $array)
{
if(strpos($array,";")) $array = substr($array,0,strpos($array,";"));
if(strpos($array,",")) $array = substr($array,0,strpos($array,","));
if(strpos($array," ")) $array = substr($array,0,strpos($array," "));
if(strpos($array,"<")) $array = substr($array,0,strpos($array,"<"));
if(strpos($array,">")) $array = substr($array,0,strpos($array,">"));
if(strpos($array,"=")) $array = substr($array,0,strpos($array,"="));
if(strpos($array,"!")) $array = substr($array,0,strpos($array,"!"));
if(strpos($array,"(")) $array = substr($array,0,strpos($array,"("));
if(strpos($array,")")) $array = substr($array,0,strpos($array,")"));
if(strpos($array,"+")) $array = substr($array,0,strpos($array,"+"));
if(strpos($array,"-")) $array = substr($array,0,strpos($array,"-"));
if(strpos($array,"*")) $array = substr($array,0,strpos($array,"*"));
if(strpos($array,"/")) $array = substr($array,0,strpos($array,"/"));
if(strpos($array,"\\")) $array = substr($array,0,strpos($array,"\\"));
if(strpos($array,"\"")) $array = substr($array,0,strpos($array,"\""));
if(strpos($array,"&")) $array = substr($array,0,strpos($array,"&"));
if(strpos($array,"'")) $array = substr($array,0,strpos($array,"'"));
if(strpos($array,"[")) $array = substr($array,0,strpos($array,"["));
if(strpos($array,"]")) $array = substr($array,0,strpos($array,"]"));
if(substr($array,-1) == ".") $array = substr($array,0,-1);
if($array != "") $variablen[] = $array;
}
echo "<h2>" . $path . "</h2>";
sort($variablen);
$count_array = count($variablen);
for($zael=0;$zael<$count_array;$zael++)
{
if($variablen[$zael] == $variablen[$zael + 1])
{
unset($variablen[$zael]);
}
}
if(count($variablen) != 0)
{
foreach($variablen as $variable)
{
echo "$" . $variable . "<br>";
}
} else {
echo "Fehler beim Auslesen!";
}
}
?>
Liebe Grüße und Vielen Dank
Philipp
Hi,
Momentan bin ich aber noch am Programmieren, also bitte keine Fehler im Code nennen, da er sowieso noch nicht funktioniert.
Den Weg aber bitte auch nicht weiter verfolgen, denn das ist auf diese naive Weise nicht sinnvoll umzusetzen.
Vielleicht gibt es einen Befehl, den ich im 'Manual' übersehen habe.
Das Ganze dürfte um einiges komplexer sein, als du es dir vorstellst.
Mit einem Tokenizer solltest du anfangen.
MfG ChrisB