2012-05-23 9 views
6

पर PHP सबस्ट्रिंग और अजीब आइकन मुझे वास्तव में नहीं पता कि साइरिलिक फ़ॉन्ट पर क्यों, कुछ वर्णों को "?"एचटीएमएल

मेरे कोड

$string1 = get_the_content(); 
$string = strip_tags($string1); 
$stringcutted = substr($string,0,150); 
$replacement = "..."; 
$final = substr($stringcutted, 0, -3).$replacement; 

और यह कैसे एचटीएमएल

strange icon1 strange icon2

किसी भी समाधान पर प्रदान की गई है लग रहा है?

उत्तर

3

PHP के स्ट्रिंग कार्यों तार पर आधारित हैं क्योंकि बाइट्स का; उन्हें चरित्र एन्कोडिंग का कोई ज्ञान नहीं है। तो UTF-8, जहां एक चरित्र एक से अधिक बाइट का समय लग सकता की तरह कुछ में, जिस तरह से आप के लिए यह चाहते हैं काम नहीं करता: multibyte string functions पर

<?php 
$x = 'Подмосковные вечера'; 
print(strlen($x)."\n");  # 37, not 19 
print(substr($x,0,1)."\n"); # �, not П 
print(substr($x,0,2)."\n"); # П, not По 
?> 

देखो अगर आप गैर हेरफेर करना चाहते -एएससीआईआईआई पाठ।

0

आपको चरित्र एन्कोडिंग की जांच करने की आवश्यकता है। असल में, आपके पास एक प्रारूप में एन्कोड किया गया स्ट्रिंग है, और आप इसे किसी अन्य प्रारूप में निकाल रहे हैं।

अंतरराष्ट्रीय सामान के लिए

(और इस तरह आपको लगता है कि कर रहे हैं ऐसा लगता है) तो मैं UTF-8 का उपयोग करेंगे: -, अपने PHP में आप यह सुनिश्चित कर लें - अपने HTML फ़ाइल में (शीर्ष के निकट) सिर में जोड़ने यूटीएफ -8 के रूप में सभी तारों को फिर से संभाला जा रहा है - यदि आपके पास डेटाबेस भी है, तो सुनिश्चित करें कि डेटाबेस, टेबल और फ़ील्ड सभी यूटीएफ -8 के रूप में कॉन्फ़िगर किए गए हैं (चेतावनी: यह परिवर्तन आयात/निर्यात के बिना डेटा को भ्रष्ट कर सकता है!)। - यदि आप विशेष पात्रों के साथ टेम्पलेट फ़ाइलों को पढ़ रहे हैं, तो यह भी सुनिश्चित करें कि वे यूटीएफ -8 हैं। (यदि कोई विशेष पात्र नहीं है, तो सामान्य ASCII करेगा)

यह आसान जवाब है। चरित्र एन्कोडिंग के बारे में पढ़ने के लिए बहुत कुछ है - बस इसे Google।

(वैकल्पिक समाधान, उपयोग ASCII, लेकिन वेब के अनुकूल चरित्र कोड के लिए सब कुछ परिवर्तित करते हैं। लेकिन वह सब कोड सही पाने के लिए जटिल काम है, उपयोगकर्ता इनपुट से निपटने खासकर अगर।)