2010-09-06 11 views

उत्तर

21
बंदरगाह ereg_replace करने के लिए preg_replace आप सीमांकक

इसके अलावा [\]अमान्य\ रूप preg_replace लिए इस्तेमाल किया जा रहा है है अपने regx समापन भागने है की एक जोड़ी के बीच regex लगाने की जरूरत के लिए

चार वर्ग ]

सही पोर्ट

preg_replace('/[\\\]/','',$theData) 

इसके अलावा के बाद से वर्ण वर्ग सिर्फ एक चार है वहाँ वर्ण वर्ग का कोई वास्तविक जरूरत नहीं है तुम बस कह सकते हैं:

preg_replace('/\\\/','',$theData) 

जब से तुम सिर्फ एक चार की जगह, इस के लिए regex का उपयोग कर रहे हैं अनुशंसित नहीं है ।

str_replace('\\','',$data); 
+1

में कोई \ "मानता है: आप के रूप में str_replace का उपयोग कर एक साधारण पाठ प्रतिस्थापन का उपयोग किया जाना चाहिए। '/ \\\ /' preg_replace द्वारा अग्रेषित स्लैश से बचने के लिए नेतृत्व करेगा, आपको 4 बैकस्लैश –

+3

@Yanick की आवश्यकता है बस इसे –

+0

@Yanick, इसे नहीं करें। 'preg_replace' इसे/\\/के रूप में देखता है delimiters के भीतर एक शाब्दिक बैकस्लैश के रूप में decodes। ध्यान दें कि '/ \\\\ /' है * भी * सही है, क्योंकि \\ और \ दोनों स्ट्रिंग अक्षर में बैकस्लैश एन्कोड कर सकते हैं। नोट था टी \/एक स्ट्रिंग से बच नहीं है। –

2
str_replace("\\","",$theData); 

समारोह ereg_replace("[\]", "", $theData) बदलने की जरूरत है लेकिन मैं गंभीरता से संदेह आप कि सभी को बदलने की जरूरत है। सबसे अधिक संभावना है कि आपको कुछ अन्य ऑपरेशन की आवश्यकता है।
यह किसके लिए प्रतिस्थापित है?

0

मैं इस स्वचालित रूप से preg_replace द्वारा ereg_replace की जगह और में आवश्यक स्लैश डाल करने के लिए इस्तेमाल किया sed पहले regex

sed -i 's#ereg_replace("\([^"]*\)"#preg_replace("/\1/"#g' *.php