xOneDirectionx (04.08.2014)
Thema: [PHP] Probleme mit eval
-
03.08.2014, 02:47 #1
- Registriert seit
- 18.03.2013
- Beiträge
- 481
Thanked 264 Times in 168 Posts[PHP] Probleme mit eval
Hey,
ich habe da ein paar Probleme mit der eval()-Funktion, die ich nicht nachvollziehen kann.
Folgendes funktioniert:
PHP-Code:<?php
$string = "fucking";
$shit = "shit";
$str = 'This is a $string $shit function!';
echo $str. "<br>";
eval("\$str = \"$str\";");
echo $str;
?>
PHP-Code:<?php
$lang = getLanguageKeys();
$str = "This is a $lang['key1'] $lang['key2'] function!";
echo $str. "<br>";
eval("\$str = \"$str\";");
echo $str;
function getLanguageKeys() {
$lang['key1'] = 'fucking';
$lang['key2'] = 'shit';
return $lang;
}
?>
Kann mir hier jemand helfen?
-
03.08.2014, 11:17 #2
- Registriert seit
- 17.07.2014
- Beiträge
- 50
Thanked 26 Times in 16 PostsAW: [PHP] Probleme mit eval
Never ever do that
PHP-Code:$str = "This is a $lang['key1'] $lang['key2'] function!";
PHP-Code:$str = 'This is a '.$lang['key1'].' '.$lang['key2'].' function!';
Dann empfehle ich, nicht eval zu nutzen. Würde die Sachen cachen in einer Datei und dann includen. Eval sollte wenn möglich, nie genutzt werden.Geändert von BeTwo (03.08.2014 um 11:18 Uhr)
-
03.08.2014, 15:01 #3
- Registriert seit
- 18.03.2013
- Beiträge
- 481
Thanked 264 Times in 168 PostsAW: [PHP] Probleme mit eval
Hintergrund, warum ich eval() benutzen muss:
Ich habe eine Template-Datei (design.tpl), damit ich Änderungen am Design immer nur an einer Stelle durchführen muss. Diese binde ich in der PHP-Datei mittelsPHP-Code:echo implode('', file('design.tpl'));
Das mit dem String oben war nur ein Beispiel. Ich habe es mit der Datei jetzt hinbekommen.
design.tpl
HTML-Code:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Test</title> </head> <body> This is a {$lang['key1']} {$lang['key2']} function! </body> </html>
test.php
PHP-Code:<?php
$lang = getLanguageKeys();
$str = implode('', file('test2.tpl'));
eval("\$str = \"$str\";");
echo $str;
function getLanguageKeys() {
$lang['key1'] = 'fucking';
$lang['key2'] = 'shit';
return $lang;
}
?>
Jetzt kann ich meine Seite darauf anpassen. Danke dennoch für deine Antwort BeTwo.Geändert von xOneDirectionx (03.08.2014 um 15:02 Uhr)
-
03.08.2014, 16:46 #4
- Registriert seit
- 15.11.2011
- Beiträge
- 6.213
- Blog Entries
- 5
Thanked 9.132 Times in 3.006 PostsAW: [PHP] Probleme mit eval
Warum benutzt du keine Template-Engine wie z.B. Smarty?
Template
HTML-Code:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{$phrase.pageTitle}</title> </head> <body> {$phrase.someText} </body> </html>
PHP-Code:$smarty = new Smarty;
$smarty->assign('phrase', loadLanguage());
$smarty->display('test.tpl');
PHP-Code:class TemplateHelper {
/**
* Fügt über {phrase name="PHRASENNAME"} eine Phrase ins Template ein (optional: weitere Parameter zur Ersetzung, Beispiel: {phrase name="TestPhrase" xy="123"} | Phrase: 'Testwert: {xy}' => 'Testwert: 123'
* @param array $params Parameter, mit denen die Funktion aufgerufen werden
* @param object $smarty Smarty-Instanz
* @return Phrase mit ersetzten Platzhaltern, sofern vorhanden
*/
public static function phrase($params, $smarty) {
$phraseValue = Phrase::get($params['name']);
if(strlen($phraseValue) == 0)
return '';
unset($params['name']);
// Optionale Parameter setzen
foreach($params as $key => &$value) {
if($value == null)
$value = '';
$phraseValue = str_replace('{' . $key . '}', $value, $phraseValue);
}
return $phraseValue;
}
}
PHP-Code:$smarty->registerPlugin('function', 'phrase', array('TemplateHelper', 'phrase'));
-
The Following User Says Thank You to DMW007 For This Useful Post:
Ähnliche Themen
-
Bot Probleme
Von koppaz1337 im Forum Allgemeiner Bot-BereichAntworten: 0Letzter Beitrag: 08.07.2013, 16:48 -
DHL Probleme? (Nicht zugestellte Sendungen)
Von Bartek im Forum RealLifeAntworten: 11Letzter Beitrag: 03.01.2013, 20:52 -
VB.Net VB.net - 2 Probleme
Von Gangstersheep im Forum .NetAntworten: 5Letzter Beitrag: 25.07.2012, 17:20 -
2 Probleme mit dem PC!
Von Microsoft im Forum HardwareAntworten: 24Letzter Beitrag: 05.07.2012, 23:17 -
Cod: Mw3 Probleme
Von Salvos im Forum Sonstige GamesAntworten: 0Letzter Beitrag: 20.11.2011, 16:37
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.