2008-08-27 13 views
8

के बराबर एक जावास्क्रिप्ट regex बनाना मेरे वेबफॉर्म सबमिट करने के बाद, सर्वर पक्ष (PHP के माध्यम से) पर उपयोगकर्ता इनपुट पर एक regex लागू किया जाएगा। मैं उपयोगकर्ता को वास्तविक इनपुट क्या होगा, यह दिखाने के लिए क्लाइंट पक्ष पर रीयल-टाइम में चल रहे समान रेगेक्स को रखना चाहता हूं। यह .NET के बजाय बैक एंड पर PHP के अलावा स्टैक ओवरफ़्लो पर पूछे प्रश्न प्रश्न पृष्ठों पर पूर्वावलोकन अनुभाग के जैसा ही होगा।एक PHP regex

मेरे PHP और जावास्क्रिप्ट नियमित अभिव्यक्तियों को एक-दूसरे के समान कार्य करने के लिए मुझे क्या ध्यान रखना चाहिए?

उत्तर

10

हेहे यह पहले से पूछे जाने वाले क्षण थे और जेफ ने इंगित किया:
http://www.regular-expressions.info/refflavors.html

उपकरण और भाषाओं में नियमित अभिव्यक्ति क्षमताओं की तुलना की जाती है।

1

मुझे पता चला है कि नियमित अभिव्यक्तियों के विभिन्न कार्यान्वयन में अक्सर वास्तव में समर्थन करने वाले सूक्ष्म अंतर होते हैं। यदि आप पूरी तरह से यह सुनिश्चित करना चाहते हैं कि परिणाम दोनों फ्रंटेंड और बैकएंड में समान होगा, तो सबसे अच्छा विकल्प आपके PHP बैकएंड पर अजाक्स कॉल करना होगा और दोनों रेगेक्स मूल्यांकनों के लिए PHP कोड के समान टुकड़े का उपयोग करना होगा।

3

यदि नियमित अभिव्यक्ति सरल हैं तो कोई समस्या नहीं होनी चाहिए, क्योंकि अधिकांश अभिव्यक्तियों में नियमित अभिव्यक्ति की मूल बातें आम हैं।

ब्यौरे के लिए तो यह सबसे अच्छा होगा दोनों कार्यान्वयन अध्ययन करने के लिए:

http://www.regular-expressions.info/php.html

http://www.regular-expressions.info/javascript.html

Javascripts कार्यान्वयन शायद और अधिक बुनियादी है, इसलिए यदि आप एक सबसे कम आम विभाजक दृष्टिकोण के लिए जा रहे हैं तो उस के लिए लक्ष्य।

1

@ एलकेएम AJAX यहां स्पष्ट विजेता है। यह आपको DRY सिद्धांत का पालन करने की अनुमति देगा। आप जावास्क्रिप्ट और PHP में अपना पार्सिंग कोड क्यों लिखना चाहते हैं?

+5

इसे दो बार क्यों लिखें? क्योंकि यह उपयोगकर्ता के लिए तेजी से चलाएगा और कम बैंडविड्थ लेगा। – TRiG

+3

आप क्लाइंट पक्ष पर भरोसा नहीं कर सकते हैं, लेकिन यदि आप नहीं चाहते हैं तो आप एक HTTP याचिका नहीं बनाना चाहते हैं, इसलिए सबसे अच्छा तरीका क्लाइंट और सर्वर दोनों में कोड को पार्स करना है (सर्वर पार्सिंग केवल किया क्योंकि आप ग्राहक पर भरोसा नहीं करते हैं!)। – Adirael

0

जावास्क्रिप्ट के रेगेक्स और PHP के preg_match दोनों पर्ल पर आधारित हैं, इसलिए कोई पोर्टिंग समस्या नहीं होनी चाहिए। हालांकि, ध्यान दें कि जावास्क्रिप्ट केवल पर्ल समर्थन करता है कि संशोधक के एक सबसेट का समर्थन करता है।

दो की तुलना के लिए अधिक जानकारी के लिए:

वितरण पद्धति के रूप में, मैं तुम्हें JSON, सबसे पतला डाटा इंटरचेंज प्रारूप के रूप में उपयोग करना चाहते हैं सुझाव देंगे तिथि (AFAIK) और eval() के माध्यम से एक जावास्क्रिप्ट ऑब्जेक्ट के लिए सीधे अनुवाद योग्य। बस उस बुरे लड़के को AJAX सत्र के माध्यम से रखें और आपको जाने के लिए सेट किया जाना चाहिए।

मुझे उम्मीद है कि यह मदद करता है :)