मैं है निम्न परीक्षण PHP कोड:अजीब पीएचपी UTF-8 व्यवहार
string(16) "Développeur Web"
string(16) "Développeur-Web"
string(16) "Développeur-Web"
string(16) "D'eveloppeur-Web"
string(16) "d'eveloppeur-web"
string(15) "developpeur-web"
लेकिन मेरे लाइव सर्वर पर अजीब तरह से व्यवहार कर रहा है:
header('Content-type: text/html; charset=utf-8');
$text = 'Développeur Web';
var_dump($text);
$text = preg_replace('#[^\\pL\d]+#u', '-', $text);
var_dump($text);
$text = trim($text, '-');
var_dump($text);
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
var_dump($text);
$text = strtolower($text);
var_dump($text);
$text = preg_replace('#[^-\w]+#', '', $text);
var_dump($text);
अपने स्थानीय मशीन पर यह अपेक्षा के अनुरूप काम कर रहा है
string 'Développeur Web' (length=16)
string '-pp-' (length=4)
string 'pp' (length=2)
string 'pp' (length=2)
string 'pp' (length=2)
string 'pp' (length=2)
स्थानीय मशीन विंडोज चल रहा है PHP संस्करण 5.2.4 और लाइव सर्वर सेंटोस PHP संस्करण 5.2.10 चल रहा है वे किसी भी माध्यम से समान नहीं हैं, आदर्श नहीं मुझे पता है।
क्या किसी ने भी ऐसा कुछ अनुभव किया है और मुझे सही दिशा में इंगित कर सकता है? मुझे लगता है कि यह यूटीएफ -8 या लोकेल से संबंधित किसी प्रकार का सर्वर या PHP कॉन्फ़िगरेशन है।
अग्रिम
अजीब। मैं Regexes के साथ महान नहीं हूँ - क्या आप बता सकते हैं कि पहले preg_replace() चीज़ क्या कर रही है? –
मैंने शुरुआत में 'mb_default_encoding() 'के बारे में सोचा था, लेकिन उस लाइब्रेरी के पास' preg_ *' फ़ंक्शंस से कोई संबंध नहीं है। –
पहली नियमित अभिव्यक्ति को गैर अक्षर या अंकों को प्रतिस्थापित करना चाहिए "-" यह सिम्फनी ट्यूटोरियल से आया है http://www.symfony-project.org/jobeet/1_4/Doctrine/en/08 –