النتائج 1 إلى 8 من 8

الموضوع: المساعدة في عمل دالة استبدال حروف "يرجا المساعدة"

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270

    المساعدة في عمل دالة استبدال حروف "يرجا المساعدة"



    السلام عليكم
    اريد عمل دالى تقوم بوضع "فاصلة" , بعد كل 5 كلمات

    في البداية اريد تجريد ال نص الذي نريد استبداله من كل وسمات ال HTML اذا وجدت

    ثانيا اريد التعامل مع اول 400 حرف فقط وليس كافة النص

    ومن ثم قمت بادخال فاصلة مباشرة قبل الفراغ الخامس


    ولاكن الدالة لم تعمل باشكل السليم!!!!!!

    هذه هي الدالة يرجا المساعد في اصلاحها لتعمل بالشكل السليم


    كود PHP:

    function re_discibe($txt)
    {

    $txt=strip_tags($txt);
    $txt=substr($txt,  400);

        
    $k=0;

        for(
    $i=0$istrlen($txt); $i++)
        {
        
        if(
    $txt[$i] == " ")
        {
        
    $k++;

           if(
    $k == 4)
           {
            
    substr_replace($txt,   ','   $txt[$i-1]);
            
    $i +=;
           
    $k=0;
           }


        }



        } 

        return 
    $txt;







    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر



  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 1999
    المشاركات
    483


    يمكنك استخدام دالة explode لتفكيك النص ، ولكن قد تواجهك مشكلة في الكلمات المركبة وخاصة الأسماء مثل ( عبدالله ، عبدالحق ، عبدالعزيز ... الخ ) وذلك في حال وجود مسافة بين الكلمتين .

    بالتوفيق ..





    __________________
    http : // www . ansar . net

  3. #3
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    السلام عليكم

    كيف رح استخدم دالة expload لتعمل هذا العمل ؟؟؟

    ممكن توضيح بكود؟

    وشكرا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2007
    المشاركات
    393


    هذا مثال لدالة explode
    كود:
    array explode ( string $delimiter, string $string [, int $limit] )
    كود PHP:
    $text "بسم الله الرحمن الرحيم";
    $array explode(" ",$text);
    print_r($array); 
    /*
      prints : 
      Array
    (
        [0] => بسم
        [1] => الله
        [2] => الرحمن
        [3] => الرحيم
    )

    */ 
    لونبغى 40 كلمة فقط :

    كود PHP:
    $array explode(" ",$text);
    $i 1;
    $text "";
    while( 
    $t each($array) )
    {
       if(
    $i 40)
          break;
    // ممكن تسوي عمليات على النص وتشييك زي ماتبغى
    // اسناد الكلمة الى النص
       
    $text .= $t." ";
       
       
    $i++;

    echo 
    $text






    __________________
    موقعي الشخصي
    www.Flasher.ws

    جزيرة الفنون
    www.Artsisland.net

  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    405


    جزى الله الإخوان خيراً على ما بذلوه من تقديم ما عندهم من معلومات ...

    دعنا عزيزي نرتب طلباتك ..

    أولاً النص:
    كود PHP:
    $text "النص هنا"
    في البداية اريد تجريد ال نص الذي نريد استبداله من كل وسمات ال HTML اذا وجدت
    لإزالتها نهائياً (يفضّل):
    كود PHP:
    $newtext strip_tags($text); 
    [.. أو ..] لإبقائها مع تعطيل عملها:
    كود PHP:
    $newtext htmlspecialchars($text); 
    ثانيا اريد التعامل مع اول 400 حرف فقط وليس كافة النص
    كود PHP:
    $newtext substr($newtext0400); 
    ومن ثم قمت بادخال فاصلة مباشرة قبل الفراغ الخامس
    دعنا أولاً نحذف المسافات المكررة بالداخل حيث أنها ستعتبر أكثر من كلمة .. ونحذف المسافات من بداية المتغير ونهايته:
    كود PHP:
    $newtext trim(preg_replace("/(\s{2,})/si"" "$newtext)); 
    ثم نقطعها تبعاً للكلمات:
    كود PHP:
    $parts explode(' '$newtext); 
    الآن نفحص عناصر المصفوفة فإذا كان ترتيب الكلمة + 1 يقبل القسمة على 5 .. عندها نضيف الفاصلة إلى العنصر في المصفوفة وفي النهاية نعود ونجمع عناصر المصفوفة في متغير نصي يفصل بين كل عنصر وآخر مسافة ثم نطبعها :
    كود PHP:
    while (list($key$value) = each($parts)) {
        if ((
    $key+1) % == 0) {
            
    $parts[$key] = $value .' ، ';
        }
    }

    $result implode(' '$parts);
    echo 
    $result
    ملاحظة: تمت التجربة والمثال يعمل .. حاول أن تضع أكثر من 5 أو 10 كلمات ... إذا أردت أن تكون في دالة ( فنكشن ) فتفضل:

    كود PHP:
    <?

    function addcommas($text) {
        
    $newtext strip_tags($text);
        
    $newtext substr($newtext0400);
        
    $newtext trim(preg_replace("/(\s{2,})/si"" "$newtext));
        
    $parts explode(' '$newtext);

        while (list(
    $key$value) = each($parts)) {
            if ((
    $key+1) % == 0) {
                
    $parts[$key] = $value .' ، ';
            }
        }

        return 
    implode(' '$parts);
    }

    ?>
    تحياتي،،






  6. #6


    كود PHP:
    <?php
    /*
     *    changed : 20. jul. 04
     *    author  : [email]troels@kyberfabrikken.dk[/email]
     *    additional : Martin B. Vestergaard, Adrian Cope
     *    download: [url]http://www.phpclasses.org/browse.html/package/1020.html[/url]
     *
     *    description :
     *        a script aimed at cleaning up after mshtml. use it in your wysiwyg html-editor,
     *        to strip messy code resulting from a copy-paste from word.
     *        this script doesnt come anything near htmltidy, but its pure php. if you have
     *        access to install binaries on your server, you might want to try using htmltidy.
     *    note :
     *        you might want to allow fonttags or even style tags. in that case, modify the
     *        function htmlcleaner::cleanup()
     *    usage :
     *        $body = htmlcleaner::cleanup($_POST['htmlCode']);
     *
     *    disclaimer :
     *        this piece of code is freely usable by anyone. if it makes your life better,
     *        remember me in your eveningprayer. if it makes your life worse, try doing it any
     *        better yourself.
     */
    define ('HTML_CLEANER_NODE_CLOSINGSTYLE_NORMAL',0);
    define ('HTML_CLEANER_NODE_CLOSINGSTYLE_NONE',1);
    define ('HTML_CLEANER_NODE_CLOSINGSTYLE_XHTMLSINGLE',2);
    define ('HTML_CLEANER_NODE_NODETYPE_NODE',0);
    define ('HTML_CLEANER_NODE_NODETYPE_CLOSINGNODE',1);
    define ('HTML_CLEANER_NODE_NODETYPE_TEXT',2);
    define ('HTML_CLEANER_NODE_NODETYPE_SPECIAL',3);
    class 
    htmlcleanertag {
        var 
    $nodeType;
        var 
    $nodeName;
        var 
    $nodeValue;
        var 
    $attributes;
        var 
    $closingStyle;

        function 
    htmlcleanertag($str)
        {
            if (
    $str[0]=='<')
                
    $this->nodeType HTML_CLEANER_NODE_NODETYPE_NODE;
            else
                
    $this->nodeType HTML_CLEANER_NODE_NODETYPE_TEXT;

            if ((
    strlen($str)>1) && ($str[1]=='?' || $str[1]=='!'))
                
    $this->nodeType HTML_CLEANER_NODE_NODETYPE_SPECIAL;

            if (
    $this->nodeType==HTML_CLEANER_NODE_NODETYPE_NODE)
                
    $this->parseFromString($str);
            else if (
    $this->nodeType==HTML_CLEANER_NODE_NODETYPE_TEXT || $this->nodeType==HTML_CLEANER_NODE_NODETYPE_SPECIAL)
                
    $this->nodeValue $str;
        }

        function 
    parseFromString($str)
        {
            
    $str str_replace("\n"," "$str);
            
    $offset=1;
            
    $endset=strlen($str)-2;
            if (
    $str[0]!='<' || $str[strlen($str)-1]!='>')
                
    trigger_error('tag syntax error'E_USER_ERROR);
            if (
    $str[strlen($str)-2]=='/') {
                
    $endset $endset-1;
                
    $this->closingStyle HTML_CLEANER_NODE_CLOSINGSTYLE_XHTMLSINGLE;
            }
            if (
    $str[1]=='/') {
                
    $offset=2;
                
    $this->nodeType HTML_CLEANER_NODE_NODETYPE_CLOSINGNODE;
            }
            for (
    $tagname '';preg_match("/([a-zA-Z0-9\_\:]{1})/",$str[$offset]);$offset++)
                
    $tagname .= $str[$offset];
            for (
    $tagattr '';$offset<=$endset;$offset++)
                
    $tagattr .= $str[$offset];
            
    $this->nodeName strtolower($tagname);
            
    $this->attributes $this->parseAttributes($tagattr);
        }

        function 
    parseAttributes($str)
        {
            
    $i=0;
            
    $return = array();
            
    $_state = -1;
                    
    $_value '';
            while (
    $i<strlen($str)) {
                
    $chr $str[$i];
                if (
    $_state == -1) {        // reset buffers
                    
    $_name '';
                    
    $_quote '';
                    
    $_value '';
                    
    $_state 0;        // parse from here
                
    }
                if (
    $_state == 0) {        // state 0 : looking for name
                    
    if (preg_match("/([a-zA-Z]{1})/",$chr)) {
                        
    $_name $chr;
                        
    $_state 1;
                    }
                } else if (
    $_state == 1) {    // state 1 : looking for equal
                    
    if (preg_match("/([a-zA-Z]{1})/",$chr)) {
                        
    $_name .= $chr;
                    } else if (
    $chr == '=') {
                        
    $_state 2;
                    }
                } else if (
    $_state == 2) {    // state 2 : looking for quote
                    
    if (preg_match("/([\'\"]{1})/",$chr)) {
                        
    $_quote $chr;
                        
    $_value '';
                        
    $_state 3;
                    } else {
                        
    $_quote '';
                        
    $_value $chr;
                        
    $_state 3;
                    }
                } else if (
    $_state == 3) {    // state 3 : looking for endquote
                    
    if ($_quote != "") {
                        if (
    $chr == $_quote) {
                            
    // end of attribute
                            
    $return[strtolower($_name)] = $_value;
                            
    $_state = -1;
                        } else {
                            
    $_value .= $chr;
                        }
                    } else {
                        if (
    preg_match("/([a-zA-Z0-9\.\,\_\-\/\#\@\%]{1})/",$chr)) {
                            
    $_value .= $chr;
                        } else {
                            
    // end of attribute
                            
    $return[strtolower($_name)] = $_value;
                            
    $_state = -1;
                        }
                    }
                }
                
    $i++;
            }
            if (
    $_value!='') {
                
    $return[strtolower($_name)] = $_value;
            }
            return 
    $return;
        }

        function 
    toString()
        {
            if (
    $this->nodeName == 'img' || $this->nodeName == 'br' || $this->nodeName == 'hr')
                
    $this->closingStyle HTML_CLEANER_NODE_CLOSINGSTYLE_XHTMLSINGLE;
            if (
    $this->nodeType == HTML_CLEANER_NODE_NODETYPE_TEXT || $this->nodeType == HTML_CLEANER_NODE_NODETYPE_SPECIAL) return $this->nodeValue;
            if (
    $this->nodeType == HTML_CLEANER_NODE_NODETYPE_NODE)
                
    $str '<'.$this->nodeName;
            else if (
    $this->nodeType == HTML_CLEANER_NODE_NODETYPE_CLOSINGNODE)
                return 
    '</'.$this->nodeName.">\n";
            foreach (
    $this->attributes as $attkey => $attvalue) {
                
    $str .= ' '.$attkey."=\"".$attvalue."\"";
            }
            if (
    $this->closingStyle == HTML_CLEANER_NODE_CLOSINGSTYLE_XHTMLSINGLE)
                
    $str .= ' />';
            else
                
    $str .= '>';
    //        if ($this->nodeName != "td")
    //            $str .= "\n";
            
    return $str;
        }

    }

    class 
    htmlcleaner
    {
        function 
    version()
        {
            return 
    'mshtml cleanup v.0.9.3 by [email]troels@kyberfabrikken.dk[/email]';
        }

        function 
    dessicate($str)
        {
            
    $i=0;
            
    $parts = array();
            
    $_state = -1;
            
    $str_len strlen($str);
            while (
    $i<$str_len) {
                
    $chr $str[$i];
                if (
    $_state == -1) {    // reset buffers
                    
    $_buffer '';
                    
    $_state 0;
                }
                if (
    $_state == 0) {    // state 0 : looking for <
                    
    if ($chr == '<') {
                        if ((
    $i+$str_len) && $str[$i+1] == '!' && $str[$i+2] == '-' && $str[$i+3] == '-') {
                            
    // comment
                            
    $_state 2;
                        } else {
                            
    // start buffering
                            
    if ($_buffer!='') {
                                
    // store part
                                
    array_push($parts,new htmlcleanertag($_buffer));
                            }
                            
    $_buffer '<';
                            
    $_state 1;
                        }
                    } else {
                        
    $_buffer .= $chr;
                    }
                } else if (
    $_state == 1) {    // state 1 : in tag looking for >
                    
    $_buffer .= $chr;
                    if (
    $chr == '>') {
                        
    array_push($parts,new htmlcleanertag($_buffer));
                        
    $_state = -1;
                    }
                } else if (
    $_state == 2) {    // state 2 : in comment looking for -->
                    
    if ($str[$i-2] == '-' && $str[$i-1] == '-' && $str[$i] == '>') {
                        
    $_state = -1;
                    }
                }
                
    $i++;
            }
            return 
    $parts;
        }

        
    // removes the worst mess from word.
        
    function cleanup($body)
        {
            
    // in case you want to let some tags get through, just remove them from this array
            
    $disallowed_tags = array('cleanup:''o:''xml:''font''script''style''object''iframe''applet''meta''embed''link');
            
            
    // to protect textnodes and other mumbojumbo in the root area
            
    $body '<cleanup:document>' $body '</cleanup:document>';
            
            
    $return '';
            foreach (
    htmlcleaner::dessicate($body) as $part) {
                if (isset(
    $part->attributes['style']))
                    unset(
    $part->attributes['style']);
                if (isset(
    $part->attributes['class']))
                    unset(
    $part->attributes['class']);
                for (
    $i=0$check true$check && ($i count($disallowed_tags)); $i++) {
                    
    $check $check && (strstr($part->nodeName$disallowed_tags[$i]) === false);
                }
                if (
    $check) {
                    
    $return .= $part->toString();
                }
            }
            return 
    $return;
        }
    }
    ?>






    __________________
    │║▌║█║▌║▌││║▌║█║▌│║▌║█
    w w w . m a r h o o n s . c o m

  7. #7
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    بارك الله فيكم جميعا
    الله يوفقكم


    ولاكن استفسار بالنسبة للسطر حذف كل الافرغات الزائدة
    $newtext = trim(preg_replace("/(\s{2,})/si", " ", $newtext));

    كيف ممكن تعديل على هذا المر لتجريد كافة علامات اللغوية مثلا ? ! , < > . @#-_=+-~$%^&*()[]{}/\|?

    أريد تجريد كافة التكست قبل اضافة الفاصلة وبعدها اضافة الفاصلة

    يعني اذا ممكن العتديل على هذا السطر لازالة كافة ال اشارات الي ذكرتها

    بارك الله فيكم ووفقكم وشكرا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  8. #8
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    405


    الفنكشن بعد التعديل مع مثال :
    كود PHP:
    <? 

    function addcommas($text) { 
        
    $newtext strip_tags($text); 
        
    $newtext substr($newtext0400); 
        
    $newtext trim(preg_replace("/(\s{2,})/si"" "$newtext)); 
        
    $chars '?!,<>.@#-_=+-~$%^&*()[]{}/\|';
        
    $newtext preg_replace('/['preg_quote($chars'/') .']/si'''$newtext);

        
    $parts explode(' '$newtext); 

        while (list(
    $key$value) = each($parts)) { 
            if ((
    $key+1) % == 0) { 
                
    $parts[$key] = $value .' ، '
            } 
        } 

        return 
    implode(' '$parts); 


    $text "تج@ربة لوضع فاصلة بعد كل خمس كلمات مثلاً هنا نكتب أي جملة او كلمات او عبارات ?!,<>.@#-_=+-~$%^&*()[]{}/\|";
    echo 
    addcommas($text);

    ?>











ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض