2010-11-19 8 views
9

चलाने के बाद \ r \ n (न्यूलाइन वर्ण) को प्रतिस्थापित करना, इसलिए जब मैं json_encode चलाता हूं, तो यह \ r \ n को MySQL से भी पकड़ता है। मैंने डेटाबेस में तारों को फिर से लिखने का प्रयास नहीं किया है। मैंने MySQL में एन्कोडिंग को डिफ़ॉल्ट latin1_swedish_ci से ascii_bin और utf8_bin में बदलने की कोशिश की है। मैंने str_replace और chr (10), chr (13) सामान के टन किया है। मैं और क्या कहने के लिए पता नहीं या तो मैं कर रहा हूँ वाला सिर्फ इस यहाँ छोड़ कर ....json_encode

$json = json_encode($new); 
if(isset($_GET['pretty'])) { 
echo str_replace("\/", "/", jsonReadable(parse($json))); 
} else { 
$json = str_replace("\/", "/", $json); 
echo parse($json); 
} 

jsonReadable समारोह here से है और पार्स समारोह here से है। पहले से मौजूद str_replaces इसलिए हैं क्योंकि मुझे </h1> जैसे अजीब प्रारूपित HTML टैग मिल रहे हैं। अंत में, $ नया एक सरणी है जो उपरोक्त तैयार की जाती है। अनुरोध पर पूरा कोड।

मुझे स्टैक ओवरव्लो की सहायता करें। तुम मेरे ही उम्मीद

+0

क्या आपने अभी तक JSON विनिर्देश पढ़ा है? http://www.json.org/ –

+0

हाँ मैंने लंबे समय से जेएसओएन के साथ काम किया है, बात यह है कि इस स्क्रिप्ट का आउटपुट एक सीएमएस और फ़्लैश के लिए फ्लैश द्वारा उठाया जा रहा है \ r \ n सामान । यह सिर्फ नई लाइनों को सम्मिलित करता है जिन्हें हम नहीं चाहते हैं। हम
चाहते हैं। और हाँ, मैंने nl2br की कोशिश की, कोई भाग्य नहीं। –

+0

तो किसी ने फ्लैश में JSON को ठीक से लागू नहीं करने का निर्णय लिया। लवली। –

उत्तर

7

क्या स्ट्रिंग में "\ r \ n" (0x0D 0x0A में) या शाब्दिक स्ट्रिंग '\ r \ n' है? यदि यह पूर्व है, तो इसे किसी भी नई लाइन को हटा देना चाहिए।

$json = preg_replace("!\r?\n!", "", $json); 

वैकल्पिक रूप से, "के साथ" दूसरा पैरामीटर "की जगह < br/>" यदि आप एक br टैग के साथ नई-पंक्तियों को बदलने के लिए चाहते हैं। बाद के मामले के लिए, निम्न का प्रयास करें:

$json = preg_replace('!\\r?\\n!', "", $json); 
+0

यह काम नहीं किया, वे अभी भी वहां हैं। मुझे लगता है * हो सकता है * यह MySQL के साथ कुछ करने के लिए है:/ –

+0

बहुत उपयोगी @ फ्रैंकी, धन्यवाद। – DnfD

2

मैं एक ऐसी ही समस्या हुई हो, मैं प्रयोग किया है:

$p_num = trim($this->recp); 
$p_num = str_replace("\n", "", $p_num); 
$p_num = str_replace("\r", ",", $p_num); 
$p_num = str_replace("\n",',', $p_num); 
$p_num = rtrim($p_num, "\x00..\x1F"); 

सुनिश्चित नहीं हैं कि अगर यह अपनी आवश्यकताओं के साथ मदद मिलेगी।

+0

यह भी काम नहीं करता, फिर भी, मुझे लगता है कि यह एक MySQL मुद्दा हो सकता है। यद्यपि प्रयास के लिए धन्यवाद! * उच्च-पांच * –

4

इसे JSON में प्रतिस्थापित न करें, इसे एन्कोड करने से पहले इसे स्रोत में बदलें।