الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طريقه للتخلص من مشاكل الالف و التاء المربوطه ...

مغلق
بدأه MaaSTaaR في 3 نوفمبر 2005 · 2 رد · 529 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :)

عيدكم مبارك جميعاً :) , لا بد و ان الجميع يلاحظ انه هناك مشاكل مع الحرفين الالف و التاء المربوطه , مثلاً البعض يكتب التاء المربوطه في آخر الكلمه كـ (ه) و البعض يكتبها كـ (ة) , كذلك بالنسبه للالف فـ البعض يكتبها كـ (ا) او (أ) او (إ) .

هذه المشكله غالباً ما تسبب ارتباك في السكربتات التي نتكتبها و التي بها نظام للبحث , حيث يضطر المستخدم البحث عن نفس الكلمه باكثر من شكل مثلاً (تجربه , تجربة) .

قمت بكتابة كود يحل هذه المشكله نسبياً , مثلاً عند كتابة المستخدم لكلمة (تجربه) في محرك البحث فإن المحرك يبحث عن كلمتي (تجربه , تجربة) :)

الكود مفتوح المصدر يحق للجميع استخدامه و التطوير عليه (رخصة GNU GPL) , النص الكامل لها هنا و ملخص لها هنا .

و اخيراً هذا هو الكود

<?php

/*
By : MaaSTaaR http://www.el7zn.com
===================================
This script under GNU GPL License <http://opensource.org/licenses/gpl-license.php>
*/

	$connect = mysql_connect('localhost','root','');
   	 $select  = mysql_select_db('test');

	$index = 0;

	if (empty($_GET))
   	 {
      $index = 1;
   	 }

   	 if ($index == 1)
   	 {
      echo '<form name="FormName" action="?start=1" method="post">';
       	 echo '<input name="key" type="text" value="">';
          echo '<input type="submit" value="Send">';
          echo '</form>';
   	 }

   	 if ($_GET['start'] == 1)
   	 {
      $search_a = eregi('(ا|أ|إ)',$_POST['key']);
          $search_b = eregi('(ه|ة)',$_POST['key']);

          if ($search_a or $search_b)
          {
         	 $replace = eregi_replace('(ا|أ|إ)','(ا|أ|إ)',$_POST['key']);
             	 $replace = eregi_replace('(ه|ة)','(ه|ة)',$replace);

         	 $query   = mysql_query("SELECT * FROM MySmartEngine WHERE word REGEXP '" . 

$replace . "'") or die(mysql_error());

             	 while ($row = mysql_fetch_array($query))
             	 {
                echo $row['word'] . '<br>';
             	 }
          }
   	 }

?>

بصراحه ارى ان الكود بحاجه إلى المزيد من التطوير , فأتمنى من الاخوه الذين لديهم افكار المساعده في تطويره , لعل و عسى ان يتم طرحه كـ Class تستفيد منه السكربتات العربيه :)

تم تعديل هذه المشاركة بواسطة MaaSTaaR في 3 نوفمبر 2005 في 15:19

#3

:) حلوة الفكرة , انا مفكرتش فى المشكلة دى قبل كدة

فى مشكلة ان هو عند عملية البحث بيرجع اى كلمة مشابهة

يعنى مثلا

التجربة -> التجربة ( و دة المطلوب )

ال -> التجربة ( دة حيعمل مشاكل )

انا عدلت شوية فى الكود و خليته يدور على الكلمة نفسها فقط لكن اعتقد ان لسة فى افكار ممكن تطور الكود اكتر.

<?php
/*
Originally By : MaaSTaaR http://www.el7zn.com
Enhanced By   : Ahmed Shreef
===================================
This script under GNU GPL License <http://opensource.org/licenses/gpl-license.php>
*/

     //modify this array
     $char_regex = array (
                          '(ا|أ|إ)'=>'(ا|أ|إ)',
                          '(ه|ة)'  =>'(ه|ة)'
                          );

     if (!isset($_GET['start']))
        {
            echo '<form name="FormName" action="?start=1" method="post">';
            echo '<input name="key" type="text" value="">';
            echo '<input type="submit" value="Send">';
            echo '</form>';
        }

        elseif ($_GET['start'] == 1)
        {
         $replace = $_POST['key'];

            foreach( $char_regex as $key=>$val )
              {
               $replace = eregi_replace($key ,$val ,$replace);
              }

           $connect = mysql_connect('localhost','root','');
           $select  = mysql_select_db('phpalex');

           $query   = mysql_query('SELECT * FROM news
                                   WHERE title REGEXP \'' . $replace. '+[[:space:]]\' ')
                                   or die(mysql_error());


             print  $replace ."<br>";
             while ($row = mysql_fetch_array($query))
                   {
                        print $row['Title'].'<br>';
                   }
        }
?>

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…