我有串PHP函數參數數組
$argsInString = '"%s hello", \'%s world\', $foo->bar("anything", array(\'foo\' => 5 , \'bar\' => $a)),5, foo($s) ,$foo';
而且我想轉換成數組是這樣的:
$argsInArray = array('"%s hello"', '\'%s world\'', '$foo->bar("anything", array(\'foo\' => 5 , \'bar\' => $a))', '5', 'foo($s)', '$foo');
我嘗試這樣的事:
eval('$argsInArray = array(' . $argsInString . ');');
但這個執行變量。
你能幫助我如何從$ argsInString創建$ argsInArray?
編輯: 如果在字符串中使用單引號(')編寫一個會覆蓋單個參數的正則表達式成功,則eval的工作方式如上所述。
或者你可以寫正則表達式preg_match_all( '...',$ argsInString,$ argsInArray);這是最好的。
基本上你在代碼中使用'eval'任何時候,你做了什麼。 '$ argsInString'從哪裏來,你到底會用什麼輸出? – Mike
是的,你有正確的評價,我嘗試寫正則表達式,但我表示。與eval我嘗試使用php編譯器,但這個faild也。 $ argsInString來自框架,如果翻譯模板,這是定義變量。 – h4kuna
這個框架對於這些字符串是否有某種內置的解析方法? – Mike