اذهب إلى المحتوى

السؤال

نشر

أستخدمت الدالة strpos لمعرفة موضع نص معين في نص آخر:

<?php
	echo strpos("Hello, World!","World");	// 7

الآن أريد إضافة نص جديد (كلمة My على سبيل المثال) بعد هذا الموضع، بحيث يكون النص الناتج هو:

Hello, My World!

هل هناك دالة في PHP يمكنها فعل هذا الأمر؟

Recommended Posts

  • 1
نشر

يمكنك كذلك أن تستعمل الدالة substr على النحو التالي:

<?php

// النص الأصلي
$oldstr = "Hello, World!";

// نُحدد المكان الذي نريد أن نضيف فيه النص الجديد
$pos = strpos($oldstr,"World");

// النص الجديد الذي نريد إضافته
$str_to_insert = "My ";

// نستعمل الدالة substr لتقسيم النص ونقوم بتجميلع بالشكل الذي نريده
$str = substr($oldstr, 0, $pos) . $str_to_insert . substr($oldstr, $pos);
echo $str;	// Hello, My World!

بهذا الشكل سوف تحصل على النتيجة المطلوبة، الآن يمكن تحويل الكود السابق إلى دالة ليسهل إستخدامها:

<?php

function insert_str($original_str, $position, $str_to_insert){
    return substr($original_str, 0, $position) . $str_to_insert . substr($original_str, $position);
}

echo insert_str("Hello, World!", 7, "My ");	// Hello, My World!

توثيق الدالة substr()‎ في موسوعة حسوب

أيضًا يمكنك إستعمال الدالة substr_replace للقيام بهذا الأمر بشكل بسيط على النحو التالي:

<?php

// النص الأصلي
$oldstr = "Hello, World!";

// نُحدد المكان الذي نريد أن نضيف فيه النص الجديد
$pos = strpos($oldstr,"World");

// النص الجديد الذي نريد إضافته
$str_to_insert = "My ";

echo substr_replace($oldstr, $str_to_insert, $pos, 0);	// Hello, My World!

 

  • 1
نشر

يمكنك الاستعانة بالوظيفة substr_replace لإستبدال سلسلة نصية معينة ضمن سلسلة أخرى نحددها لها، سنحتاج في هذا التلاعب ببعض الوظائف الأخرى. فيما يلي بعض الخطوات الوصفية: 

  1. تخزين السلسة النصية الأصلية في متغير. 
  2. تخزين السلسلة النصية الفرعية في متغير. 
  3. تخزين الموضع الابتدائي للسلسلة النصية الفرعية. 
  4. حساب طول السلسلة النصية الفرعية. يعطينا هذا فكرة عن احداثي هاته السلسلة في السلسلة الأم. مثال: تقع World ما بين الموضعين 7 و (موضعها الابتدائي + طولها). نسمي الموضع الأول أ والثاني ب. 
  5. استبدال ما بين الموضعين أ و ب بالسلسلة النصية المرادة. 

مثال عملي: 

<?php

// تعريف سلسلة نصية 
$str = "Hello, World!";

// تعريف السلسلة النصية الفرعية
$word = "World";

// تخزين الموضع الابتدائي السلسة النصية الفرعية
$pos = strpos($str, $word);

// pos + length و pos استبدال ما بين الموضعين 
$newstr = substr_replace($str, 'My', $pos , strlen($word));

// طباعة النتيجة 
echo $newstr; // Hello, My!

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...