المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : التخلص من مشاكل الهمزات عند البحث عن الأسماء العربية



loulou ange
11-01-2013, بتوقيت غرينيتش 03:46 PM
http://www.dzbatna.com/images/icons/iconrote.gif ط§ظ„طھط®ظ„طµ ظ…ظ† ظ…ط´ط§ظƒظ„ ط§ظ„ظ‡ظ…ط²ط§طھ ط¹ظ†ط¯ ط§ظ„ط¨ط*ط« ط¹ظ† ط§ظ„ط£ط³ظ…ط§ط، ط§ظ„ط¹ط±ط¨ظٹط© (http://www.dzbatna.com/t1622447/)




http://www.stoptrainingnow.com/uploaded/15_1239463361.gif








من فترة طويييييييلة كنت أعاني من مشكلة في الأسماء العربية من حيث الهمزات والطريقة الخاطئة لكتابة الأسماء



وطرحتها كمشكلة حينها ولكن لم أجد حل http://www.dzbatna.com/images/smilies/no.gif



سؤال في mysql و php (http://www.dzbatna.com/t1424061/)
ولكن الحمد لله قد توصلت منذ فترة إلى الحل الأكيد للمشكلة وكل مرة أريد وضع الموضوع يحدث ما يعطلني http://www.dzbatna.com/images/smilies/nosweat.gif
فتوكلت على الله و إن شاء الله سوف نشرح طريقة كيف يمكن التغلب عليها




الحل كله يكمن في استخدام التعابير المنطقية regular expressions في اللغتين php و mysql
ازاي ؟؟؟
هنشرح طريقة الفكرة الأول وبعدين نضع الكود code
الفكرة إن لما المستخدم يكتب الألف بدون همزة أو بأي شكل من أشكالها يستبدلها بأي نوع من أنواع الألف في الكلمة و لو كتب الياء بالشكل ده "ي" أو "ى" برضه كأنه مفيش فرق وهكذا في الحروف المتشابهة ويحولها كلها لتعابير منطقية ولما ييجي يبجث في mysql يبحث بالتعابير المنطقية
لو مفهمتش حاجة ده طبيعي أنا حاسس إن كلامي معقد بس إن شاء الله بتفهم من الكود code لأنه بسيط جدا

الكود code
أول حاجة ننفذ الكلام اللي فوق



رمز PHP:

<code style="white-space:nowrap"> <code> function arabic_lang($text){
$text=preg_replace("/(أ|إ|ا|آ)/","(أ|إ|ا|آ)",$text);
$text=preg_replace("%(ه|ة)%","(ه|ة)",$text);
$text=preg_replace("%(ي|ى)%","(ي|ى)",$text);
return $text;
}
</code> </code>





الدالة مهمتها إنها تظبط الكلام العربي بحيث إن الحروف اللي فيها مشاكل تعملها تعبير منطقي








طب لما نيجي ننفذ الاستعلام




بسيطة



فيه شرط زي like كده بس بياخد تعبير منطقي أنا كنت أول مرة أعرفه من فترة وجيزة اسمه rlike



هنعمل الاستعلام بتاعنا عن طريق الشرط ده



مثال

رمز PHP:

<code style="white-space:nowrap"> <code> $name=arabic_lang($_POST&#91;'name'&#93;);
$data=mysql_query("select `name`,`id` from students where `name` rlike '$name' ");
</code> </code>








الكود code كامل


رمز PHP:

<code style="white-space:nowrap"> <code> function arabic_lang($text){
$text=preg_replace("/(أ|إ|ا|آ)/","(أ|إ|ا|آ)",$text);
$text=preg_replace("%(ه|ة)%","(ه|ة)",$text);
$text=preg_replace("%(ي|ى)%","(ي|ى)",$text);
return $text;
}
$name=arabic_lang($_POST&#91;'name'&#93;);
$data=mysql_query("select `name`,`id` from students where `name` rlike '$name' ");
</code> </code>








أتمنى تكون الفكرة وصلت لكم لأني عارف إن مستواي في الشرح طريقة مش كويس



بس والله الغرض من الموضوع إني أنشر العلم لأني لم أجد دروسا تتكلم عن هذا الموضوع








وياريت حد من الإخوة يحاول إعادة صياغة الموضوع بشكل مبسط لتعم الفائدة








لاتنسونا من صالح دعائكم








Abood Nour












ألعاب الأندرويد مجانا و حصريا (http://www.apotox.info/forum)




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى