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

الموضوع: Question مشكلة مع Str_Replace مرتين

  1. #1
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2004
    المشاركات
    316

    Question Question مشكلة مع Str_Replace مرتين



    السلام عليكم
    لو سمحتم كنت بحاول ابرمج مشروع بسيط فى الPHP وحصل معي مشكلة وهي كالتالى

    كود:
    <?php
    $word = "ا";
    function change($t)
    {
    $A1 = "ا";
    $A2 = "z";
    $t = str_replace($A1,$A2,$t);
    $A3 = Array("z");
    $A4 = Array("a8");
    $t = str_replace($A3,$A4,$t);
    return $t;
    }
    $m = change($word);
    echo $m;
    ?>
    فى السكربت عموما انا حاطط بعض الحروف لكى يتم تحويلها الى حروف اخرى ولكن المشكلة انه عند تحويل "ا"الى "z" سترى انها اصبحت "z" وبالتالى سيتم تغييرها مرة اخرى لأنها للأسف z موجودة فى القائمة الكود بتاع التغيير
    ومهمة السكربت تحويل بعض الحروف ضروري جدا
    هل يوجد حل ؟

    شكراً





    __________________
    مشعل
    ze3ex@hotmail.com


  2. #2


    طيب لما تعملها علي مرتين ؟

    كود PHP:
    $search = array("a""b""c");
    $replace = array("x""y""z");

    $word "a123b456c";

    echo 
    $word str_replace($search$replace$word); 






    __________________
    السيف أصدق أنباء من الكتب

  3. #3


    فهمت قصدك الأن
    لديك محتويات متداخلة وبالتالي بعد تغييرها قد تعود وتتغير فيما بعد

    فدالة str_replace تتعامل مع عناصر المصفوفة عنصر بعنصر وبالتالي قد تغير شئ وتعود وتغيره لو كان موجود مرة أخري

    أعتقد ستحتاج ان تتخل انت في هذه الأمور اللي تريد تغييرها وترتبها بحيث لا يتم إعادة التغيير فيها
    او ممكن أستخدام strpos وتسجل موقع الحروف اللي غيرتها وتستخدم دالة if لو كان الموضع الحالي مريت عليه من قبل لا يغيره ( سجل المواضع في مصفوفة وأستخدم in_array )





    __________________
    السيف أصدق أنباء من الكتب

  4. #4
    عضو نشيط
    تاريخ التسجيل
    Oct 2008
    المشاركات
    283


    كود PHP:
    $search = array("a""b""c""z"); 
    $replace = array("x""y""z""k");
    foreach(
    $replace as $key => $value) {
        
    $replace_add[$key] = "<%$key%>";
    }
    $word "a123b456c"
    $word str_replace($search$replace_add$word); 
    ده نصف الحل
    النصف الآخر هيكون باستخدام التعابير القياسية ،،،،

    في الأول استبدلنا كل حرف في المصفوفة $search بنص عبارة عن <% في الأول و %> في الآخر وبينهما الـ Key الخاص ببديل الحرف في المصفوفة $replace.
    إذن لن يستبدل حرف مرتين أبداً.

    ماذا بعد ذلك ؟
    أنا للأسف مابعرف في التعابير القياسية شيئ لكن انت ممكن تعملها أو ممكن أحد من الأخوة يساعدوك فيها.
    - قم بالبحث باستخدام التعابير القياسية في $world عن الجمل تلك: <% .. %> وقم باستبدالها بـ :
    كود PHP:
    $replace[$..] 
    طبعاً $.. هيكون النص الموجود بين <% و %>
    أعتقد انك ستستخدم الدالة preg_replace

    على فكرة كان ممكن الأمر ينتهي بتغيير كل حرف بـ key الحرف البديل .. لكن هيكون في مشكلة وهو إن أي نص شبيه بالقيمة الموجودة بالـ key هتتغير .
    بالشكل ده:
    كود PHP:
    $search = array("a""b""c""z"); 
    $replace = array("x""y""z""k");
    $word "a b c z 7";
    $word str_replace($searcharray_keys($replace), $word);
    $word str_replace(array_keys($replace), $replace$word);
    echo 
    $word
    النتيجة هتكون x y z k 7
    والنتيجة صحيحة هنا 100%

    لكن إذا كان النص بهذا الشكل b 2 c z 0
    ستكون النتيجة y z z k x وهذه نتيجة خاطئة -( الصحيحة : y 2 z k a )

    إذن عليك تكملة الحل الأول باستخدام التعابير القياسية





    __________________
    اللهم وفقني لما تحبه وترضاه...

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Oct 2008
    المشاركات
    283




    أعتقد أنه لم يكن يلزمك تعبير قياسي لتكملة الحل .. هذا السطر يكفي:
    كود PHP:
    $word str_replace($replace_add$replace$word); 
    الكود بالكامل:
    كود PHP:
    $search = array("a""b""c""z"); 
    $replace = array("x""y""z""k");
    foreach(
    $replace as $key => $value) {
        
    $replace_add[$key] = "<%$key%>";
    }
    $word "a123b456c"
    $word str_replace($search$replace_add$word);  
    $word str_replace($replace_add$replace$word);
    echo 
    $word
    إن شاء الله يعمل معك بالشكل المطلوب.





    __________________
    اللهم وفقني لما تحبه وترضاه...





المواضيع المتشابهه

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

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

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