2010-03-26 13 views
6

मान लें कि $ bodypreg_replace: अज्ञात संशोधक

something 
that 
does 
not 
interest 
me 
<!-- start --> 
some 
html 
code 
<!-- end --> 
something 
that 
does 
not 
interest 
me 

के बराबर है यदि मैं

$body=preg_replace("(.*)<!-- start -->(.*)<!-- end -->(.*)","$2",$body); 

का उपयोग करता हूं, तो मुझे प्राप्त होता है:

Warning: preg_replace() [function.preg-replace]: Unknown modifier '<' 

मुझे कैसे सही करना है?

+3

यह शायद * शुरू की स्थिति * और 'strpos' साथ * अंत * की स्थिति और फिर पाने के लिए आसान होगा:

अपने उदाहरण में पाठ संभालने 'sstrstr' के साथ इन पदों के बीच बस हिस्सा। – Gumbo

उत्तर

17

एक preg पैटर्न वर्ण जो पैटर्न ही परिसीमित की एक जोड़ी की जरूरत है। यहां आपका पैटर्न ब्रांड्स की पहली जोड़ी में संलग्न है और बाकी सब कुछ बाहर है।

इस प्रयास करें:

$body=preg_replace("/(.*)<!-- start -->(.*)<!-- end -->(.*)/","$2",$body); 

यह सिर्फ सिंटैक्स के बारे में है, पैटर्न ही जो संदिग्ध लग रहा है पर कोई गारंटी नहीं है।

संपादित करें:

preg_match('#<!-- start -->(.*?)<!-- end -->#s', $text, $match); 
$inner_text = trim($match[1]); 
+0

"$ 2" के साथ प्रतिस्थापित करने से समस्या हल हो जाती है। फिर भी मेरे पास एक प्रश्न है, $ 2 का उपयोग करके यह किसी अन्य क्षेत्र को प्रभावित करेगा? – Vinith

3

इस प्रयास करें:

$body = preg_replace("/(.*)<!-- start -->(.*)<!-- end -->(.*)/","$2",$body); 
संबंधित मुद्दे