2010-08-03 15 views
30

साथ कॉलबैक फ़ंक्शन की जगह कॉलबैक फ़ंक्शन का उपयोग कर <a href='wiki/this_page'>this page</a>
को <wiki>this page</wiki> प्रतिस्थापित करने की आवश्यकता:मैचों

text = text.replace(/<wiki>(.+?)<\/wiki>/g, function(match) 
    { 
     return "<a href='wiki/"+match.replace(/ /g, '_')+"'>"+match+"</a>"; 
    } 
); 

नतीजा यह है कि टैग <wiki> संरक्षित है (पूर्ण मैच) है - <a href='wiki/<wiki>this_page</wiki>'><wiki>this page</wiki></a>

वहाँ एक रास्ता पाने के लिए है मैचों [0], मैचों [1] के रूप में PHP के preg_replace_callback() में?

उत्तर

62

replace function's callback मैचों को पैरामीटर के रूप में लेता है।

उदाहरण के लिए:

text = text.replace(/<wiki>(.+?)<\/wiki>/g, function(match, contents, offset, input_string) 
    { 
     return "<a href='wiki/"+contents.replace(/ /g, '_')+"'>"+contents+"</a>"; 
    } 
); 

(दूसरा पैरामीटर पहले कैप्चर समूह है)

+1

काम कर रहे। अब मुझे पता था कि जावास्क्रिप्ट संदर्भ – Qiao

+1

मुझे लगता है कि उत्तर ठीक है, लेकिन यह बहुत संक्षिप्त है। साथ ही मिलान करने वाले फ़ंक्शन के अंतिम दो पैरामीटर का क्रम गलत लगता है। https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter देखें जहां यह बताता है कि मेल खाने वाले फ़ंक्शन द्वारा प्राप्त किए गए पैरामीटर की एक अलग संख्या है "कोष्ठकित सबमिशन [es]" की संख्या। – user2367418

संबंधित मुद्दे