एक संभावित समाधान "कलाकार" के बगल में डेटाबेस में एक और कॉलम बनाना होगा, जैसे "artist_normalized"। यहां, तालिका को पॉप्युलेट करते समय, आप स्ट्रिंग का "सामान्यीकृत" संस्करण सम्मिलित कर सकते हैं। फिर कलाकार_सामान्यीकृत कॉलम में खोज की जा सकती है।
एक परीक्षण कोड:
<?php
$transliterator = Transliterator::createFromRules(':: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', Transliterator::FORWARD);
$test = ['abcd', 'èe', '€', 'àòùìéëü', 'àòùìéëü', 'tiësto'];
foreach($test as $e) {
$normalized = $transliterator->transliterate($e);
echo $e. ' --> '.$normalized."\n";
}
?>
परिणाम:
abcd --> abcd
èe --> ee
€ --> €
àòùìéëü --> aouieeu
àòùìéëü --> aouieeu
tiësto --> tiesto
जादू अनुवादक वर्ग द्वारा किया जाता है। निर्दिष्ट नियम तीन क्रियाएं करता है:स्ट्रिंग को विघटित करता है, डायक्रिटिक्स को हटाता है और फिर स्ट्रिंग को कैनोनिकलाइज्ड करता है। PHP में ट्रांसलिटरेटर आईसीयू के शीर्ष पर बनाया गया है, इसलिए ऐसा करने से आप आईसीयू लाइब्रेरी की टेबल पर भरोसा कर रहे हैं, जो पूर्ण हैं और विश्वसनीय।
नोट:इस समाधान के लिए intl . के साथ PHP 5.4 या उच्चतर की आवश्यकता है विस्तार।