मेरा मानना है कि strtr
is multi-byte safe, किसी भी तरह से str_replace
के बाद से मल्टी-बाइट सुरक्षित है आप लपेट सकता है:
function mb_strtr($str, $from, $to)
{
return str_replace(mb_str_split($from), mb_str_split($to), $str);
}
चूंकि mb_str_split
फ़ंक्शन नहीं है, इसलिए आपको अपना खुद का लिखना होगा (का उपयोग करना ?
function mb_str_split($str) {
return preg_split('~~u', $str, null, PREG_SPLIT_NO_EMPTY);;
}
हालांकि एक स्ट्रिंग आप निम्नलिखित मिल सकती है से सभी (लैटिन) accentuations दूर करने के लिए आप एक समारोह के लिए देख रहे हैं:और mb_strlen
), या आप बस PHP UTF-8 कार्यान्वयन (हल्के से बदल) इस्तेमाल कर सकते हैं कार्य उपयोगी:
function Unaccent($string)
{
return preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml|caron);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'));
}
echo Unaccent('ľľščťžýáíŕďňä'); // llsctzyairdna
echo Unaccent('Iñtërnâtiônàlizætiøn'); // Internationalizaetion
स्रोत
2010-05-03 15:33:50
आप हो सकता है आप वास्तव में क्या करने के लिए कोशिश कर रहे हैं का एक उदाहरण प्रदान कर सके (कोड नमूना?)? एक निश्चित उपयोग मामले के लिए एक विकल्प का सुझाव देना आसान होगा। – Max
मेरे पास हाथ में एक सटीक उदाहरण नहीं है, लेकिन हमेशा PHP दस्तावेज़ प्रलेखन पृष्ठ पर उपयोगकर्ता टिप्पणियों को देखने के लायक है: http://us3.php.net/strtr ऐसा लगता है कि ऐसे लोग हैं जो पहले से ही एक ही समस्या थी । शायद उनमें से एक ने पहले ही समाधान पोस्ट किया था। – Max
हां, मैक्स, आप सही हैं। मैं वहां एक समाधान की तलाश में था लेकिन मुझे कुछ भी नहीं मिला। – Martin