2009-10-22 6 views
6

मैं घुंघराले apostrophes से छुटकारा पाने की कोशिश कर रहा हूँ (कुछ प्रकार के समृद्ध पाठ दस्तावेज़ से चिपकाया है, मुझे लगता है) और मुझे लगता है कि एक सड़क ब्लॉक मार रहा है। नीचे दिया गया कोड मेरे लिए काम नहीं कर रहा है।PHP - घुंघराले apostrophes से छुटकारा पा रहा है

$word = "Today’s"; 
$search = array('„', '“', '’'); 
$replace = array('"', '"', "'"); 
$word = str_replace($search, $replace, htmlentities($word, ENT_QUOTES)); 

What I end up with is $word containing 'Today’s'. 

जब मैं अपने $ खोज सरणी से ऐम्परसेंड निकालने के लिए, की जगह जगह लेता है, लेकिन यह स्पष्ट रूप से, काम नहीं किया जाएगा के बाद से एम्परसेंड स्ट्रिंग में छोड़ दिया है। जब एम्पर्सेंड में आता है तो str_replace विफल क्यों होता है?

$word = htmlentities(str_replace($search, $replace, $word), ENT_QUOTES); 

:

+2

उन घुंघराले apostrophes स्मार्ट उद्धरण कहा जाता है। – random

उत्तर

9

क्यों नहीं सिर्फ इस करते हैं?

+0

वाह, यह अविश्वसनीय रूप से आसान था। मुझे लगता है कि मैं बहुत लंबे समय तक कोडिंग कर रहा हूं! – Anthony

6

मेरे लिए चीजों को सही तरीके से काम करने के लिए, मुझे उदाहरण के मुकाबले कुछ और मजबूत चाहिए। यहां मेरे लिए क्या काम किया गया है:

// String full of rich characters 
$string = $_POST['annoying_characters']; 

// Replace "rich" entities with standard text ones 
$search = array(
    '“', // 1. Left Double Quotation Mark “ 
    '”', // 2. Right Double Quotation Mark ” 
    '‘', // 3. Left Single Quotation Mark ‘ 
    '’', // 4. Right Single Quotation Mark ’ 
    ''', // 5. Normal Single Quotation Mark ' 
    '&', // 6. Ampersand & 
    '"', // 7. Normal Double Qoute 
    '&lt;', // 8. Less Than < 
    '&gt;'  // 9. Greater Than > 
); 

$replace = array(
    '"', // 1 
    '"', // 2 
    "'", // 3 
    "'", // 4 
    "'", // 5 
    "'", // 6 
    '"', // 7 
    "<", // 8 
    ">" // 9 
); 

// Fix the String 
$fixed_string = htmlspecialchars($string, ENT_QUOTES); 
$fixed_string = str_replace($search, $replace, $fixed_string); 
संबंधित मुद्दे