2012-08-14 10 views
8

मैं jQuery फ़्लाई पर एक पाठ क्षेत्र के मान की गणना का उपयोग करें:।php के लिए एक ही परिणाम प्राप्त `` str_len jQuery `.val() लंबाई()` के लिए के रूप में

function count_chars() { 
    count_chars=$('#text_textarea').val().length; 
} 

... तो पर फ़ॉर्म को क्रमबद्ध करने के लिए सबमिट करें, टेक्स्टएरा का टेक्स्ट AJAX के माध्यम से एक php फ़ाइल में भेजें जो तब सर्वर की ओर से पाठ को मान्य करता है। हालांकि, मुझे न्यूलाइन और रिक्त स्थान के साथ समस्याएं आईं।

बेशक, अगर मुझे टेक्स्टरेरा से "जैसा है" टेक्स्ट मिलता है, तो PHP प्रत्येक नई पंक्ति को दो या 4 वर्णों (\n, ...) के रूप में गिना जाएगा।

strlen(str_replace(array("\r", "\n"), ' ', $text))) 

या इस:: तो मैं उन्हें कुछ इस तरह से बदलने के लिए करने की कोशिश की

strlen(preg_replace('/\s+/', ' ', trim($text))) 

हालांकि, अगर मैं जैसे मिल गया 10 पैराग्राफ और jQuery 2500 वर्ण लौटाते हैं, PHP या तो 2510 या 24 9 0 लौटाएगा, भले ही मैं किसी स्थान के साथ नई लाइनों को प्रतिस्थापित करता हूं या उन्हें पूरी तरह से हटा देता हूं। तो अंतर 20 है, लेकिन केवल 10 नई लाइनें हैं ...?

मुझे क्या याद आ रही है? JQuery के समान परिणाम लौटने के लिए मैं php कैसे प्राप्त कर सकता हूं? समस्या है, PHP में या jQuery में?

+0

आप किस चरित्र एन्कोडिंग का उपयोग करते हैं? आपका क्लाइंट किस ओएस पर चलता है? (विंडोज यूनिक्स की तुलना में अलग-अलग लाइन अंत का उपयोग करता है)। – Maerlyn

+0

@Maerlyn: ठीक है, यह एक वेबसर्वर पर चलेगा जहां मुझे अभी पता नहीं है कि यह खिड़कियां या लिनक्स है, यह सिर्फ होस्टिंग साझा किया गया है ... चरित्र सेट utf8 है, लेकिन क्या इससे कोई फर्क पड़ता है? – Chris

+0

आपको शायद दोनों जगहों पर लाइन फ़ीड्स को सामान्य करना होगा। मुझे नहीं लगता कि जब आप "रिटर्न" हिट करते हैं तो डिफ़ॉल्ट रूप से ब्राउज़र द्वारा डालने वाले ब्राउज़र को नियंत्रित कर सकते हैं। –

उत्तर

3

यह काम करना चाहिए:

strlen(str_replace("\r", '', $text))) 

स्पष्टीकरण:

strlen(str_replace(array("\r", "\n"), ' ', $text)))

यहाँ, आप ला रहे हैं \ r और \ N एक स्थान के साथ है, तो वर्णों की संख्या वास्तव में परिवर्तन नहीं करता है ।

strlen(preg_replace('/\s+/', ' ', trim($text)))

यहाँ आप एक भी ' ' में सतत खाली स्थान के कम कर रहे हैं।

+2

आप उसे समझा सकते हैं कि '/ \ s + /' यहाँ चाल क्यों नहीं करता । वह '/ \ s + /' के साथ है, वह रिक्त स्थान को ध्वस्त कर रहा था। और मैं 'preg_replace ('/(?: \ R | \ n)/',' ', ट्रिम ($ टेक्स्ट)) के साथ जाऊंगा, बस सुनिश्चित करने के लिए। – Prusse

+0

@Prusse हाँ, किया! – Dogbert

+0

धन्यवाद, डॉगबर्ट! दुर्भाग्यवश, यह अभी भी मुझे गलत परिणाम देता है। मैंने 12345 टाइप किया, फिर 5 रिक्त स्थान और 5 नई लाइनें - jQuery ने 15 कहा, php ने कहा 20 ... – Chris

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