2012-09-19 14 views
9

जब एक सरणीphp preg_replace की जगह लाइन तोड़ने

$arr=array_values($arr); // renumber array 

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

संपत्ति प्रकार

संपत्ति

को

प्रकार

किसी भी मामले में मैं उपयोग कर रहा हूँ:

$newelement=preg_replace("/[^A-Za-z0-9\s\s+]/"," ",$element); 
पहले से ही

अवांछित को दूर करने के

मेरे स्ट्रिंग से जा रहा है डीबी सम्मिलन से पहले charchters तो मैं करने के लिए इसे बदलने की कोशिश की:

$newelement=preg_replace("/[^A-Za-z0-9\s\s+'<br>''<br>''/n''/cr']/"," ",$element); 

लेकिन कोई बदलाव नहीं आया है, और लाइन फ़ीड/लाइन ब्रेक/गाड़ी वापसी अभी भी वहाँ है?।

क्या मैं preg_replace सही तरीके से कर रहा हूं?

+0

लाइन ब्रेक ऑपरेटिंग सिस्टम के आधार पर \ n या \ r या \ r \ n हैं। 'str_replace (सरणी ('\ r \ n', '\ n', '\ r'), '', $ text) ' – Horen

+0

आपको इसे पैच करने की कोशिश करने के बजाय अंतर्निहित समस्या को ठीक करने की आवश्यकता है; 'array_values' मानों को नहीं बदलता है, यह उदाहरण देखें: http: // codepad।संगठन/mhbzjkl8 – jeroen

उत्तर

20

वह प्रीग थोड़ा जटिल दिखता है। और फिर आपके पास शुरुआत में^ए-जेड .. या लाइनफीड के रूप में है। तो आप लाइनफीड को प्रतिस्थापित नहीं करना चाहते हैं?

कैसे के बारे में

$newelement=preg_replace("/[\n\r]/","",$element); 

या

$newelement=preg_replace("/[^A-Za-z ]/","",$element); 

\ भी है linefeed से मेल खाता है (\ N)

+1

पहले विकल्प के लिए '/ \\ [nr] /' एक और सटीक पैटर्न होगा। उन बैकस्लैश के बिना बच निकले यह अक्षरों 'एन' या 'आर' को प्रतिस्थापित करने जा रहा है। –

4

यह हो सकता है भी काम करता है:

// char(32) is whitespace 
// for CR 
$element = strtr($element, chr(13), chr(32)); 

// for LF 
$element = strtr($element, chr(10), chr(32)); 
2

इस बात के लिए काम किया मुझे।

preg_replace("/\r\n\r\n|\r\r|\n\n/", "<br />", $element); 

1

यह हैक है, लेकिन आप कुछ इस तरह कर सकते हैं (लापता स्लैश लगाने संपादित):

$email_body_string = preg_replace("/\=\r\n$/","", $email_body_string); 

प्रतिस्थापन, एक लाइन है कि एक बराबर के चिह्न के साथ समाप्त होता लगता है कहते हैं और मानक कैरिज रिटर्न और लाइन फीड अक्षर बाद में है। उन पात्रों को कुछ भी नहीं ("") के साथ बदलें और बराबर चिह्न गायब हो जाएगा, इसके नीचे की रेखा पहली पंक्ति में शामिल होने के लिए खींची जाएगी।

अब, इसका तात्पर्य है कि आपके पास कभी भी एक रेखा नहीं होगी जो बराबर चिह्न के साथ समाप्त हो, जो जोखिम है। यदि आप इसे बेहतर करना चाहते हैं, तो रेखा की लंबाई जांचें जहां रैप (बराबर चिह्न के साथ) प्रकट होता है। यह लाइन की शुरुआत से लगभग 73 वर्णों में होता है। फिर आप कह सकते हैं:

if (strlen(equals sign) == 73) 
     $email_body_string = preg_replace("/\=\r\n$/","", $email_body_string); 
संबंधित मुद्दे