2009-03-13 12 views
16

से शून्य चरित्र को हटा सकते हैं मैं कैसे एक PHP चर कि एक स्ट्रिंग जो एक XML संरचना का प्रतिनिधित्व करता है शामिल है। इस स्ट्रिंग में इलगल वर्ण हैं जो मुझे स्ट्रिंग से एक नया SimpleXMLElement ऑब्जेक्ट बनाने नहीं देते हैं। मेरे पास उनकी प्रतिक्रिया को संशोधित करने के लिए सामग्री के स्रोत से पूछने का कोई तरीका नहीं है, इसलिए मुझे SimpleXMLElement ऑब्जेक्ट बनाने से पहले इस स्ट्रिंग पर कुछ सफाई निष्पादित करने की आवश्यकता है।मैं स्ट्रिंग

मुझे विश्वास है कि समस्या का कारण (0x00 (00) हेक्स) वर्ण है, और यह इस स्ट्रिंग एक्सएमएल के टेक्स्ट नोड्स में से एक के भीतर स्थित है।

इस चरित्र या अन्य वर्ण कि SimpleXMLElement वस्तु को तोड़ सकते थे दूर करने के लिए सबसे अच्छा तरीका क्या है।

उत्तर

43
$text = str_replace("\0", "", $text); 

$text स्ट्रिंग में सभी रिक्त पात्रों की जगह लेगा। यदि आप कई प्रतिस्थापन करना चाहते हैं, तो आप पहले दो तर्कों के लिए सरणी भी प्रदान कर सकते हैं।

+0

[email protected] एन्कोडिंग के आधार पर (UTF-8), इस मान्य वर्ण –

+0

@Johannes Rossel को दूर कर सकता है: मैं कोड और टेक्स्ट मैच बनाने के लिए $ text = जोड़ा गया। str_replace काम करने के लिए तीसरा तर्क – phihag

+2

कोड केवल लगता है संशोधित नहीं करता है जब मैं यह कर: $ पाठ = str_replace ("�", "", $ पाठ); –

9

ट्रिम() भी स्रोत स्ट्रिंग के दोनों छोर (लेकिन अंदर नहीं) से, अशक्त पात्रों को हटा देगा।

$text = trim($text); 

मैं सॉकेट सर्वर संचार के लिए यह उपयोगी एक अशक्त चरित्र के रूप में json_decode() अशक्त लौटने के लिए कारण बनता है मिल गया है, खासकर जब चारों ओर JSON गुजर,। http://www.php.net/manual/en/intro.filter.php

फ़िल्टर कार्यों को मान्य और मूल्यों स्वच्छ:

+1

एक पुराना उत्तर हो सकता है, लेकिन मेरे जेसन डीबग आउटपुट में एक समस्या के लिए सबसे आसान फिक्स था (सरणी में परिवर्तित अपवाद, सरणी कुंजियों में 0 अक्षर शामिल थे।) :) –

+0

ट्रिम ने मेरे लिए समस्या हल की अन्य समाधानों की कोशिश करने के घंटे। धन्यवाद! – Rodniko

0

हालांकि यह शायद अपने प्रश्न का प्राथमिक लक्ष्य नहीं है, कृपया PHP के फिल्टर कार्यों पर एक नजर है। PHP साइट फार्म:

$a = '[email protected]'; 
$b = 'bogus - at - example dot org'; 
$c = '([email protected])'; 

$sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL); 
if (filter_var($sanitized_a, FILTER_VALIDATE_EMAIL)) { 
    echo "This (a) sanitized email address is considered valid.\n"; 
} 

$sanitized_b = filter_var($b, FILTER_SANITIZE_EMAIL); 
if (filter_var($sanitized_b, FILTER_VALIDATE_EMAIL)) { 
    echo "This sanitized email address is considered valid."; 
} else { 
    echo "This (b) sanitized email address is considered invalid.\n"; 
} 

$sanitized_c = filter_var($c, FILTER_SANITIZE_EMAIL); 
if (filter_var($sanitized_c, FILTER_VALIDATE_EMAIL)) { 
    echo "This (c) sanitized email address is considered valid.\n"; 
    echo "Before: $c\n"; 
    echo "After: $sanitized_c\n";  
} 

परिणाम:

यह (क) स्वच्छ ईमेल पता मान्य माना जाता है।

यह (बी) स्वच्छता ईमेल पता अमान्य माना जाता है।

यह (सी) स्वच्छ ईमेल पता मान्य माना जाता है।

से पहले: ([email protected])

के बाद:

+0

स्ट्रिंग क्या है ईमेल पता ??? – Jabari

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