php - build url from regex string containing named subpattern -


यहाँ मैं match_url फ़ंक्शन का उपयोग कर रहा हूं

  फ़ंक्शन match_url ($ url) , $ Url) {foreach ($ regex = & gt; $ args के रूप में $ urls) {$ r = str_replace ('/', '\ /', $ regex); preg_match ( "/ $ आर / मैं", $ यूआरएल, $ से मेल खाता है); अगर (गणना ($ मैचों) & gt; 0) {$ प्रेषण = एरे (); $ Args ['args'] = सरणी (); अगर (रिक्त ($ एजीआर) & amp;! खाली ($ मैचों ['नियंत्रक'])) $ $ प्रेषण ['नियंत्रक'] = $ मैचों ['नियंत्रक']; $ प्रेषण ['कार्रवाई'] = $ मैचों ['कार्रवाई']; } Else {foreach ($ c = & gt; $ v के रूप में $ मैचों) {यदि (is_string ($ k)) {$ args ['args'] [$ k] = $ v; }} $ प्रेषण = $ आर्ग्स; } वापसी प्रेषण; }}}  

यहां कुछ उदाहरण हैं $ urls

  $ urls = array ('लेख / (? पी & lt; वर्ष & gt; \ d {4}) '= & Gt; सरणी (' नियंत्रक '= & gt;' लेख ',' क्रिया '= & gt;' शो ',' नाम '= & gt;' लेख_दृश्य '),' व्यवस्थापक / (? पी & lt; नियंत्रक & gt; [- \ w ] +) / (? पी एंड एलटी; एक्शन & gt; [- \ w] +) '= & gt; सरणी (),' (? पी & lt; नियंत्रक & gt; [- \ w] +) / (? पी & lt; एक्शन & gt; [- \ w ] +) '= & Gt; सरणी ());  

निम्न यूआरएल लेख / 2010 जैसे सरणी वापस आ जाएगी:

  सरणी ([नियंत्रक] = & gt; आलेख [कार्रवाई] = & gt; शो [ नाम] = & gt; लेख_दृश्य [आर्ग्स] = & gt; आरे ([वर्ष] => 2010))  

यह काम करता है जितना अपेक्षित, लेकिन अब मैं एक ऐसा फ़ंक्शन बना रहा हूं जो कि मुझे दिए गए url नाम और आर्ग्स से यूआरएल बनाने के लिए उदाहरण के लिए:

  $ name = "article_view"; $ Args = array ("वर्ष" = & gt; 2010); Echo url_for ($ name, $ args); / / आउटपुट आलेख / 2010 / आउटपुट आलेख / 2010  

जिस भाग के साथ मुझे परेशानी हो रही है, वह यह पता लगाना है कि मैं एआरजेक्स के साथ यूआरएल रीजेक्स से चर को कैसे बदल सकता हूँ।

क्या ऐसा करने का एक सरल तरीका है?

सही दिशा में कोई भी सुझाव या संकेत मिलेगा।

यहाँ मेरे साथ आए समाधान है:

  फ़ंक्शन url_for ($ urls, $ name, $ args) {$ url = ""; विदेशी मुद्रा ($ यू = $ के रूप में यूआरएल = & gt; $ वी) {यदि ((खाली ($ वी ['नाम']) & amp; $ v ['नाम'] == $ नाम) {$ url = $ k; विदेशी मुद्रा ($ $ = $ $ as $ args = $ value) {$ url = preg_replace ("/ \ (\? पी \ & lt; $ key \ & gt; (। *) \) /", $ Value, $ url); }}} वापसी $ url; }  

जो अब मुझे उम्मीद है के रूप में काम करता है


Comments