php

2009-12-18 4 views
8

में एक स्ट्रिंग से यूनिकोड वर्ण (LEFT_TO_RIGHT_MARK) को कैसे पट्टी करें I एन्कोडिंग से पहले एक स्ट्रिंग से बाएं-टू-राइट-मार्क (\ u200e) और दाएं-से-बाएं-मार्क (\ u200f) को हटाने का प्रयास कर रहा हूं यह JSON के रूप में। निम्न में से कोई भी काम नहीं करता है:php

$s = mb_ereg_replace("\u200e", '', $s); 
$s = preg_replace("#\u200e#u", '', $s); 
$s = preg_replace("#\u200e#", '', $s); 

किसी भी मदद की सराहना की जाती है!

+0

कौन सी एन्कोडिंग स्ट्रिंग है? – troelskn

उत्तर

0

क्या आपने अपनी स्क्रिप्ट फ़ाइल को यूटीएफ -8 में एन्कोड करने का प्रयास किया है, और वास्तव में वहां वर्णों को लिखना (या प्रतिलिपि बनाना या चिपकाना) है?

0

str_replace का उपयोग करने के बारे में क्या, और उस चरित्र कोड का उपयोग करके उस चरित्र को कोडिंग; कुछ इस तरह, हो सकता है:

$new_string = str_replace("\x20\x0f", "", $your_string); 

और, आपके मामले में, जैसा कि आप को बदलने के लिए कई अलग अलग वर्ण है, तो आप उन सभी को एक कॉल में str_replace को बदल सकता है:

$new_string = str_replace(
    array(
     "\x20\x0e", 
     "\x20\x0f", 
    ), 
    array(
     "", 
     "", 
    ), 
    $your_string 
); 

इसके लिए काम करता है तुम्हारी समस्या ?

5

आपका यूनिकोड एस्केपिंग गलत है, यह काम करना चाहिए:

preg_replace('/\x20(\x0e|\x0f)/', '', $string) 

टेस्ट:

<?php 
    $string = chr(0x20) . chr(0x0e) . 'fo' . chr(0x20) . chr(0x0e) . 'o' . chr(0x20) . chr(0x0f); 
    echo $string . "\n"; 
    echo preg_replace('/\x20(\x0e|\x0f)/', '', $string); 
?> 

या, का उपयोग str_replace():

str_replace(array("\x20\x0e", "\x20\x0f"), '', $string); 
+0

'str_replace' क्यों काम नहीं करता है? – Asaph

+0

असल में, यह काम करता है। मेरा परीक्षण बीमार था। str_replace() को शामिल करने के लिए अद्यतन उत्तर। शायद strtr() का भी उपयोग कर सकते हैं। – tmont

+0

वास्तव में \ x0e क्या है? – iankit

0

आप इस कोशिश कर सकते हैं? 200E के अपने UTF8 एन्कोडिंग और 200F

$s=preg_replace('/\xe2\x80[\x8e\x8f]/', '', $s) 

या str_replace साथ

$s=str_replace("\xe2\x80\x8e", "", $s); 
$s=str_replace("\xe2\x80\x8f", "", $s); 
0

इस

preg_replace('/\x{E2}\x{80}\x{8E}/', '', $s); 
// strip unicode chars (LEFT_TO_RIGHT_MARK) 
5

कोशिश कुछ दिनों के लिए इस मुद्दे के साथ कुश्ती के बाद, मैं अंत में इस सवाल का जवाब मिल गया है !

$str = preg_replace('/(\x{200e}|\x{200f})/u', '', $str); 
+0

के रेगेक्स समकक्ष मेरे लिए काम करता है जहां @ टोंट का जवाब (उच्च वोट के साथ) नहीं था – roryok

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

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