में एक यूटीएफ 8 टेक्स्ट काटें मुझे डेटाबेस से यूटीएफ 8 टेक्स्ट मिलता है, और मैं केवल पहले $ लेन वर्ण (एक शब्द में परिष्करण) दिखाना चाहता हूं। मैंने कई विकल्पों की कोशिश की है लेकिन फ़ंक्शन अभी भी विशेष वर्णों (á, é, í, ó, आदि) के कारण काम नहीं करता है।PHP
सहायता के लिए धन्यवाद! अगर मैं 65 पात्रों के साथ एक पाठ काटना
function text_limit($text, $len, $end='...')
{
mb_internal_encoding('UTF-8');
if((mb_strlen($text, 'UTF-8') > $len)) {
$text = mb_substr($text, 0, $len, 'UTF-8');
$text = mb_substr($text, 0, mb_strrpos($text," ", 'UTF-8'), 'UTF-8');
...
}
}
संपादित एक उदाहरण
जोड़ने के लिए है, यह रिटर्न:
अन जार्डिन डी एस्टिलो neoclásico acorde चोर एल ...
यदि मैं विशेष वर्ण (í, á) बदलता हूं, तो यह लौटाता है:
संयुक्त राष्ट्र Jardin de एस्टिलो neoclasico acorde चोर एल Palacio de ...
मुझे यकीन है कि वहाँ एन्कोडिंग या सर्वर, या php के साथ कुछ अजीब है हूँ, लेकिन मैं इसे समझ नहीं सकता! धन्यवाद!
अंतिम समाधान
मैं इस UTF8 PHP library और सब कुछ का उपयोग कर रहा अब काम करता है ...
और यदि आप text_limit का उपयोग नहीं करते हैं तो एन्कोडिंग समस्या नहीं बनाती है, है ना? –
पाठ बिना किसी समस्या के दिखाया गया है। समस्या तब आती है जब मैं इसे काटता हूं, कि उन विशेष पात्रों में कई बाइट्स हैं, इसलिए text_limit() वास्तव में एक छोटी सी स्ट्रिंग देता है। – fesja
संभावित डुप्लिकेट [एन मल्टीबाइट स्ट्रिंग टू एन चार्स] (http://stackoverflow.com/questions/2154220/truncate-a-multibyte-string-to-n-chars) – Gordon