لخبراء #C البحث والاستبدال

السلام عليكم اخواني الاعزاء

انا مبتدء فى البرمجة واحاول برمجة برنامج صغير للبحث والاستبدال داخل ملفات php لضبطها كي تكون مهيئة لبرنامج poedite

وللتوضيح اكثر انا ابحث بداخل الملف عن

هذا مثال الكود الدخل

                      $of_options[] = array(  "name"      => "General Settings",

وهذا ما اريده بعد عملية البحث والاستبدال

                      $of_options[] = array(  'name'      =>__( 'General Settings','$world'),

وهذه المحاولة التي اجريتها

                      Source = Source.Replace("\"name\"=>", "\'name\'=> __('\' ,'$world \'),");

ولكن كان الخرج هكذا

                      $of_options[] = array(  'name'=> __('' ,'$world '),"General Settings",

فهل من مساعدة وجزاكم الله خيرا


التعليق السابق

فقط للتوضيح

فيوجد مشكلة وهي ان النص الا وهو General Settings سترنج متغير

General Settings هي في (النص المدخل الذي يمكنك استبداله بقراءة من ملف مثلا) وليست تعبير قياسي

التعبير القياسي في السطر

Regex rgx = new Regex(@"""([^""]+)""\s*=>\s*""([^""]+)""\s*,");

قصدت به استبدال جميع عناصر of_options فهو يعالج نص محصور بين علامتين تنصيص مزدوجتين كمجموعة أولى فعدد من المسافات ثم => فعدد من المسافات فنص محصور بين علامتين تنصيص مزدوجتين كمجموعة ثانية فعدد من المسافات... يمكن تحسينه باضافة رموز فراغات اكثر مثل علاملات الجدولة ونهاية السطر بدلا من المطابقة لمسافات فقط أو حتى .*؟ لمطابقة أقل نص ممكن بين العلامات المميزة/الفاصلة (=، " )

انا اريد تطبيق هذا الكود فقط على name لاني جربت كود مماثل ولكن كان يقوم بتغيير كل سطر يحتوي على =>

كما ذكر أخي عبد الرحمن تستطيع حصر أو تقييد ماتريد في التعبير القياسي

مثلا

Regex rgx = new Regex(@"""name""\s*=>\s*""([^""]+)""\s*,");
string result = rgx.Replace(input, @" ""name"" => __( ""$1"", ""$world""),");

جزاك الله كل الخير اخي العزيز علي وشاكر جدا مساعدتك

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

كل المشكلة التي غير قادر على فهمها كيف يتم التعويض عن نصوص متغيره بداخل الكود بحيث انه ينزل كما هو

شكرا لك اخي الحبيب

ضع كود الـ PHP و الـ C#

هذا هو الكود المثال للphp

                   "name"=>"هنا نص انجليزي متغير يختلف من سطر لاخر لانه سطور يتم ترجمتها",
                    ,"desc"     => "Set default welcome message text"
                    ,"id"       => "wd_default_welcome_message"
                    ,"std"=> "Default welcome message!"
                    ,"type"     => "text"

وهذا كود ال#C بعد التعديل كي يتناسب مع الفكرة ولا ادري التعديل صحيح ام لا ولكن البرنامج يعمل ولكن لا يقم بتغيير اي شئ

             var input =@"(""\""name\""=>""";
             Regex rgx = new Regex(@"""name""\s*=>\s*""([^""]+)""\s*,");
             string result = rgx.Replace(input, @"""name"" =>__( ""$1"", ""$world""),");
             return Source;

وهذه توضيح اكثر للفكرة لاني ربما لم احسن التوضيح بالبداية

ملف ال php به المئات من هذه الاسطر وبالطبع الهدف هو name لان ما ياتي بعد name بين العلامات التنصيص المزدوجة هو نص سيتم ترجمته بعد ذلك فى برنامج poedite بعد عمل اخراج لجميع النصوص داخل البرنامج ( تتم هذه العملية بشكل آلي من برنامج POedite ) ولكن حتي يستطيع البرنامج قراءة الملف يجب عمل ما يسمي واربينج اي توضيح للبرنامج poedite اي الكلمات او النصوص التي سيتم سحبها داخلة

وحتي يستطيع البرنامج سحب نص يجب ان يكون بهذا الشكل على سبيل المثال

 'name'      =>__( 'My favorites','$world'),
  'name'      =>__( 'My content','$world'),