PHP

2009-08-29 5 views
11

में यूनिकोड की जांच करें मैं कैसे जांच सकता हूं कि कोई चरित्र यूनिकोड वर्ण है या PHP के साथ नहीं है?PHP

+1

आप यह स्पष्ट करना चाहते हैं कि इस संदर्भ में यूनिकोड के साथ आपका क्या मतलब है। मुझे संदेह है कि आपको यूनिकोड में परिभाषित वर्णों का सामना करना पड़ेगा, इसलिए आपकी जांच हर मामले में 'सत्य' वापस कर सकती है। – Joey

+0

मैं एक यूनिकोड charecter का कोड बिंदु प्राप्त करना चाहता हूँ। यह कैसे किया जा सकता है .. – Orion

+0

@ रोस्सेल: मेरा मानना ​​है कि वह जानना चाहता है कि क्या एक स्ट्रिंग में ASCII के अलावा अन्य वर्ण हैं। –

उत्तर

19

वास्तव में आप भी mb_string विस्तार की जरूरत नहीं है:

if (strlen($string) != strlen(utf8_decode($string))) 
{ 
    echo 'is unicode'; 
} 

और किसी दिए गए चरित्र का कोड बिंदु को खोजने के लिए:

$ord = unpack('N', mb_convert_encoding($string, 'UCS-4BE', 'UTF-8')); 

echo $ord[1]; 
+0

धन्यवाद आंखें !!!! यह कोड वर्क्स .... बहुत बहुत धन्यवाद .. – Orion

+0

@ रावेश: अगर मेरे उत्तर ने आपकी समस्या हल की है तो आप इसे स्वीकार कर सकते हैं। =) –

+0

यह आरटीएल निर्धारित करने के लिए मेरे अरबी यूनिकोड के साथ पूरी तरह से काम करता है, धन्यवाद :) –

2

आप आम तौर पर की तरह कुछ करना चाहते हैं: जबकि mb_strlen वर्ण मायने रखता है (ठीक से बहु-बाइट वर्ण, जो मुझे लगता है कि निपटने strlen मायने रखता है बाइट्स, क्या तुम सच में के बारे में बात कर रहे हैं है:

if (mb_strlen($ch) != strlen($ch)) ...

मैं जोड़ने चाहिए बल्कि यूनिकोड से - के रूप में यूनिकोड भी ASCII से पृथक एक सौ सिंगल-बाइट वर्ण)

+0

हाय searlea, आपकी तेज प्रतिक्रिया के लिए धन्यवाद! यही वह है जिसकी तलाश में मैं हूं। – Orion

+0

आईव ने इसे चेक किया और परिणाम "; echo strlen ($ ch)। "
"; अगर (mb_strlen ($ ch)!= strlen ($ ch)) \t गूंज "यूनिकोड"; अन्य \t गूंज "गैर-यूनिकोड"; ?> उसके परिणाम दे रही है गैर यूनिकोड क्या समस्या हो सकती है? – Orion

3

से अधिक शामिल किया गया है आप के साथ की कोशिश कर सकते

mb_check_encoding($s,"UTF-8") 

link

+1

यह कोड काम कर रहा है !! .. और यह उपयोगी होगा अगर आप एक यूनिकोड charecter के कोड बिंदु प्राप्त करने के लिए एक समारोह खोजने में मेरी मदद कर सकते हैं? – Orion

+0

$ s "somestring" होने दें, तो अगर (mb_check_encoding ($ s, "UTF-8")) तो {स्ट्रिंग यूनिकोड} है {else यह यूनिकोड नहीं है} –

1

एक यूनिकोड चरित्र हमेशा सबसे महत्वपूर्ण बाइट सेट होगा चाहे चरित्र का मूल्य क्या हो या यदि यह बहु-बाइट यूनिकोड चरित्र या क्या है। आप यह देखने के लिए जांच नहीं सकते कि स्ट्रिंग में वर्णों की तुलना में अधिक बाइट हैं या नहीं, क्योंकि कुछ यूनिकोड वर्ण केवल एक बाइट हैं। यदि स्ट्रिंग के बाइट मान में कोई भी वर्ण 127 से अधिक है, तो उस स्ट्रिंग में यूनिकोड होता है।

+0

मैं यूनिकोड char का कोड पॉइंट कैसे प्राप्त कर सकता हूं ? – Orion

+0

यह मदद करनी चाहिए: http://www.joelonsoftware.com/articles/Unicode.html –

1

धन्यवाद लोग .. अंत में मैं इस सवाल का जवाब मिल गया मैं को ढूंढ रहा था ।

http://hsivonen.iki.fi/php-utf8/ से फ़ाइल शामिल करें। - नहीं चरित्र धाराओं

PHP में
<?php 
    require_once("utf8.inc"); 
    /*** create a unicode string ***/ 
    $s = "حملة إلا صلاتي"; 
    $out = utf8ToUnicode($s); 
    for ($i=0;$i < strlen($s);$i++) 
    echo dechex($out[$i])."."; 
?> 
1

स्ट्रिंग्स bytestreams हैं:

निम्नलिखित कोड मेरी समस्या हल। आप वास्तव में PHP में यूनिकोड तार नहीं कर सकते हैं; आपको कुछ एन्कोडिंग के साथ अपने पात्रों को एन्कोड करने की आवश्यकता है। यदि आप पूरी यूनिकोड रेंज को कवर करना चाहते हैं, तो यूटीएफ -8 सबसे स्पष्ट विकल्प है।

आप एक UTF-8 एन्कोडेड bytestream की कोडपॉइंट प्राप्त करना चाहते हैं, तो आप इस लाइब्रेरी का उपयोग कर सकते हैं: http://hsivonen.iki.fi/php-utf8/

हालांकि, मुझे आश्चर्य है कि वास्तव में क्या आप के लिए यह आवश्यकता है? सबसे अधिक संभावना है कि आप utf-8 का उपयोग कर अपने सभी दुःखों को हल कर सकते हैं।

+0

हाय दोस्तों .. मेरी सरल आवश्यकता बाइट स्ट्रीम के कोड पॉइंट को ढूंढना था और मुझे इसे http: //hsivonen.iki से लाइब्रेरी के माध्यम से मिला। फाई/php-UTF8/!! बहुत बहुत धन्यवाद !! – Orion

+0

मैं अभी भी वास्तव में नहीं देखता कि आप पहली बार क्या समस्या हल कर रहे थे। मुझे पूरा यकीन है कि आप अपने लिए एक छेद खोद रहे हैं। – troelskn

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

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