मैं में {{key}}
आइटम को पास किए गए सरणी के मानों के साथ बदलने की कोशिश कर रहा हूं। लेकिन जब मैंने जोड़ने का प्रयास किया तो यह देखने के लिए कि मुझे Undefined variable: kvPairs
त्रुटि मिली है। मैं preg_replace_callback
के भीतर अपने चर आकार को कैसे एक्सेस कर सकता हूं?मैं preg_replace_callback के अंदर एक चर का उपयोग कैसे करूं?
public function replaceValues($kvPairs, $text) {
$text = preg_replace_callback(
'/(\{{)(.*?)(\}})/',
function ($match) {
$attr = trim($match[2]);
print_r($kvPairs[strtolower($attr)]);
if (isset($kvPairs[strtolower($attr)])) {
return "<span class='attr'>" . $kvPairs[strtolower($attr)] . "</span>";
} else {
return "<span class='attrUnknown'>" . $attr . "</span>";
}
},
$text
);
return $text;
}
अद्यतन:
मैं global
गुंजाइश बात की कोशिश की है, लेकिन यह या तो काम नहीं करता। मैंने 2 प्रिंट स्टेटमेंट्स को जोड़ा है, यह देखने के लिए कि क्या कर रहा है, एक अंदर और preg_replace_callback
के बाहर एक।
public function replaceValues($kvPairs, $text) {
$attrTest = 'date';
print_r("--" . strtolower($attrTest) . "--" . $kvPairs[strtolower($attrTest)] . "--\n");
$text = preg_replace_callback(
'/(\{{)(.*?)(\}})/',
function ($match) {
global $kvPairs;
$attr = trim($match[2]);
print_r("==" . strtolower($attr) . "==" . $kvPairs[strtolower($attr)] . "==\n");
if (isset($kvPairs[strtolower($attr)])) {
return "<span class='attr'>" . $kvPairs[strtolower($attr)] . "</span>";
} else {
return "<span class='attrUnknown'>" . $attr . "</span>";
}
},
$text
);
return $text;
}
उत्पादन मैं मिलता है:
--date--1977-05-20--
==date====
काम नहीं करता है, मैं अगले मैच के लिए $ केवीपीयरों में हेरफेर करना चाहता हूं, क्या यह संभव है या मुझे इसके लिए वैश्विक चर की आवश्यकता है? – Wikunia
यदि आपको कॉलबैक के भीतर '$ kvPairs 'में हेरफेर करने की आवश्यकता है तो आप इसे ___by संदर्भ___:' फ़ंक्शन ($ मिलान) उपयोग (& $ kvPairs) { ... }' –