मैं एक PHP फ़ाइल को पार्स कर रहा हूं और एचटीएमएल में फ़ंक्शन प्रोटोटाइप तत्व लपेट रहा हूं। यदि वहां एम्पर्सेंड हैं, तो यह मेरे कोड को तोड़ देता है।सेड और एस्क एस्केपिंग एम्परसैंड्स (&)
इनपुट: function foo (&$var1, &$var2){...}
// स्ट्रिंग के रूप में
वांछित उत्पादन (HTML में): &$var1, &$var2
// मूल रूप से, बस आउटपुट चर इतना है कि वे ब्राउज़र में उचित ढंग से प्रदर्शित होते हैं
अभी , मैं प्रत्येक चर को awk की उप विधि , और फिर sed में भेज रहा हूं।
sub(/^&/, "\\\&", param) #param is the variable of interest (e.g. &$var1)
#Intermediate step in case it's relevant. The awk-processed elements
#are sent to ${file}_param.txt. Each set of parameters are delimited by colons.
param=$(cut -d: -f$counter ${file}_param.txt)
#Replace some default text in template file with real stuff.
sed -i "s|@PARAM|$param|1" "$base"_funct_def.txt
आउटपुट मैं हो रही है: ऐम्परसेंड व्याख्या की जा रही है। पूरा मैच बदल दिया गया है।
समस्या का अलगाव: इसके बजाय ब्राउज़र में 'g $ var1' प्रदर्शित करता है, जैसा कि मैं चाहता हूं। हालांकि, मैं इसके बजाय '&' प्राप्त करने का प्रयास कर रहा हूं।
sub(/^&/, "g", param)
मेरे प्रयास: मैं क्योंकि मैंने सोचा awk पहले '\ &' जो, SED में खिलाया, व्याख्या '\ &' शाब्दिक '&' के रूप में में इसे संसाधित होगा तीन बैकस्लैश का इस्तेमाल किया। हालांकि, मैंने 1 से 6 बैकस्लेश से कहीं भी कोशिश की है, इसका कोई फायदा नहीं हुआ है।
प्रश्न: मैं से कैसे बच सकता हूं?
मैनुअल: http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html
कुछ "मेटा"/डिजाइन मैं क्या
मैं का समूह है ऐसा करने के लिए (प्रश्न के लिए आवश्यक नहीं !!) कोशिश कर रहा हूँ के बारे में सवाल PHP फाइलें जिन्हें मैं कुछ दस्तावेज उत्पन्न करने की कोशिश कर रहा हूं (जेवाडॉक्स की तरह संरचित)। मैं REGEX और शैल स्क्रिप्ट का उपयोग करके इसे पार कर रहा हूं और इसे पार्स कर रहा हूं, ताकि मैं फ़ंक्शन नाम, पैरामीटर और वापसी आइटम सूचीबद्ध कर सकूं। अब तक, REGEX ने मुझे बहुत अच्छी तरह से काम किया है, लेकिन मैंने इस बारे में बहुत कुछ पढ़ा है कि यह ऐसा कुछ है जिसके लिए REGEX का उपयोग नहीं किया जाना चाहिए। मैं इनमें से किसी के बारे में किसी भी टिप्पणी का स्वागत करता हूं (आमतौर पर प्रलेखन कैसे उत्पन्न होता है?)। धन्यवाद दोस्तों!
क्या करता है '$ param' वास्तव में क्या है? यदि आदेश अनुक्रमिक रूप से नहीं चलते हैं (उदाहरण के लिए यदि वास्तव में कुछ अन्य कोड हैं), तो आपको उन्हें एक ही कोड ब्लॉक में नहीं रखना चाहिए, यह भ्रामक है। – doubleDown
भ्रामक हिस्सा के बारे में खेद है। मैं इसे भविष्य में ध्यान में रखूंगा। $ param में पैरामीटर तत्व होता है। उदाहरण के लिए, यदि कोई फ़ंक्शन है: 'फ़ंक्शन foo (& $ arg1, $ arg2) ' $ param' 'और $ arg1' अच्छी खबर हालांकि: मुझे एक फिक्स मिला। Seding करने से पहले, मैं किसी भी 'और' से बचने के लिए सुनिश्चित किया। मैंने पहले पैरा असाइनमेंट के बाद निम्न अधिकार जोड़ा: 'param = $ (echo $ param | sed's |^& | \\ & g g)) यह अजीब चीजों को लपेटने की कोशिश करने के विरोध में है कोड का हिस्सा – bobbyjoe93