亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以對 PHP 數組進行 json_encode 并將值作為 JS RegExp 對象獲取嗎?

我可以對 PHP 數組進行 json_encode 并將值作為 JS RegExp 對象獲取嗎?

PHP
素胚勾勒不出你 2021-08-28 10:05:53
我有一些正則表達式模式作為字符串存儲在 PHP 數組中。我需要將它們作為 JavaScript RegExp 對象輸出。有沒有辦法通過使用 PHP 來做到這一點json_encode?例子:$array = [   'regex' => '/some-regex/' ];return json_encode( $array );期望的輸出:{"regex": /some-regex/}電流輸出:{"regex": "/some-regex/"}
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

不直接用json_encode。PHP 所做的就是創建包含簡單標量類型的數組和對象。它不能像創建 JS 對象那樣RegExp直接調用 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您要創建的所有對象


查看完整回答
反對 回復 2021-08-28
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

不,你不能。因為您正在傳遞僅包裝數據的 JSON 結構。json 標準的字符串以“開頭并以”結尾,否則它是一個數字或數組。

我想知道類似的事情。我想根據結果為 JS 創建一個函數,但在服務器端使用 php。通常,當您遇到此問題時,意味著您必須重新考慮頁面/應用程序的結構。

但是,正如他們在對您的問題的評論中指出的那樣,一旦 HTTP 請求結束,您可能會找到在本地構建對象的解決方法。


查看完整回答
反對 回復 2021-08-28
  • 2 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號