[英]Can I json_encode a PHP array and get values as JS RegExp objects?
我有一些正則表達式模式以字符串形式存儲在PHP數組中。 我需要將它們輸出為JavaScript RegExp對象。 有沒有辦法通過使用PHP的json_encode
來做到這一點?
例:
$array = [
'regex' => '/some-regex/'
];
return json_encode( $array );
所需的輸出:
{"regex": /some-regex/}
電流輸出:
{"regex": "/some-regex/"}
不直接使用json_encode
。 PHP所做的只是創建包含簡單標量類型的數組和對象。 它無法創建像RegExp
這樣的JS對象或直接調用JS函數。 如果你打算通過在你總是可以做些什么的問題樣本數據
$array = [
'regex' => '/some-regex/'
];
$js_string = '';
foreach($array as $key => $value) $js_string .= '"' . $key . '": new RegExp("' . $value ' "),';
return '{' . $js_string . '}';
那真是笨拙的代碼,當然,如果$array
除了正則表達式以外的任何東西,它就會崩潰(並且假定其中的所有內容對於JS都是安全的)。 但是,如果這就是你必須做的......
確實有。 更好的方法是讓json_encode
進行處理(有點處理JSON),然后讓JS自己創建對象
let regex_list = <?php echo json_encode($array) ?>;
let myregex = {};
regex_list.forEach(function(regex, index) {
myregex[index] = new RegExp(regex);
});
這是一個更清潔的解決方案。 我們不必擔心來自PHP的數據,因此JS可以從那里獲取數據,並構建一個JS對象,其中包含您要創建的所有RegExp
對象
不,你不能。 因為您要通過僅包裝數據的JSON結構。 json標准的字符串以“開頭”,以“結尾”,否則為數字或等距數組。
我想知道類似的事情。 我想根據結果為JS創建一個函數,但在服務器端使用php。 通常,當您遇到此問題時,這意味着您必須重新考慮頁面/應用程序的結構。
但是,正如他們在對問題的評論中指出的那樣,一旦HTTP請求結束,您可能會找到在本地構建對象的解決方法。
還建議您閱讀以下內容: eval的JSON安全問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.