انتقل إلى محتوى الدرس
الدرس 14
دورة PHP

دوال استبدال وتقسيم وحشو وتنسيق السلاسل النصية في PHPPHP String Replacement Splitting Padding and Formatting

استبدل وقسّم ونسّق السلاسل النصية في PHP 8 باستخدام str_replace وsubstr_replace وexplode وimplode وstr_pad وnumber_format.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تستبدل الدالة str_replace() كل ظهور للنص المبحوث عنه بنص بديل مع مراعاة حالة الأحرف، بينما تنفذ str_ireplace() نفس الاستبدال مع تجاهل حالة الأحرف.

  • يمكنك تمرير متغير رابع اختياري بالمرجع str_replace($find, $rep, $text, $count) لمعرفة عدد مرات الاستبدال التي تمت.
  • تطابق str_ireplace("http://", "https://", $url) كلاً من "HTTP://" و"Http://" و"http://".
  • لا تعدّل أي من الدالتين المتغير الأصلي إلا إذا أعدت إسناد النتيجة إليه.

تحول str_replace() الشرطات العكسية الثلاث إلى أمامية وتحفظ العدد 3 في $slashCount، وترقّي str_ireplace() البروتوكول HTTP://.

مخطط توضيحي: استوديو استبدال النصوص وحشوها وتقسيمها وتنسيقها في PHP
PHP
<?php
$rawPath = "C:\\projects\\closetag\\index.php";
$unixPath = str_replace("\\", "/", $rawPath, $slashCount);

$legacyUrl = "HTTP://CloseTag.com/login";
$secureUrl = str_ireplace("http://", "https://", $legacyUrl);

echo "$unixPath (Replaced: $slashCount)\n";
echo "$secureUrl\n";

عندما تريد استبدال أو إدراج نص في موقع رقمي محدد بدلاً من البحث عن كلمة، استخدم الدالة substr_replace($string, $replacement, $offset, $length).

  • تمرير الطول $length = 0 يقوم بحقن وإدراج النص الجديد عند الفهرس $offset دون حذف أي حرف موجود!
  • تعمل الفهارس والأطوال السالبة تماماً مثل substr()، مما يسهل إخفاء أرقام البطاقات والهواتف.
  • إغفال المعامل الرابع $length يستبدل كل شيء من $offset حتى نهاية السلسلة.

تحافظ substr_replace($iban, "************", 4, -4) على أول 4 وآخر 4 أحرف مع تغطية الوسط، بينما يدرج الطول 0 النقطة لتصبح "PHP8.4".

PHP
<?php
$iban = "SA4420000001234567891234";
$maskedIban = substr_replace($iban, "************", 4, -4);

$code = "PHP84";
$withDot = substr_replace($code, ".", 4, 0);

echo "Masked: $maskedIban\n";
echo "Inserted: $withDot\n";

تقسم الدالة explode($separator, $string, $limit) النص المفصول بعلامة محددة إلى أجزاء، وتعيد الدالة implode($glue, $pieces) ربط الأجزاء في سلسلة نصية واحدة.

  • لا يجوز تمرير نص فارغ "" كفاصل في explode()؛ لأن ذلك يطلق خطأ ValueError في PHP 8.
  • تحديد سقف موجب $limit مثل explode(":", $line, 2) يقسم النص إلى جزأين كحد أقصى.
  • تقبل implode($glue, $pieces) نص الربط دائماً كمعامل أول.

السقف السالب -1 في explode(",", $csvRow, -1) يستبعد العنصر الأخير ("express") قبل أن تدمج implode() الحقول المتبقية.

PHP
<?php
$csvRow = "laptop,1299.00,in-stock,express";
$formattedRow = implode(" :: ", explode(",", $csvRow));

$trimmedRow = implode(" | ", explode(",", $csvRow, -1));

echo $formattedRow . "\n";
echo $trimmedRow . "\n";

استخدم str_pad() لمحاذاة النصوص أو ملء الأرقام المرجعية بالأصفار إلى عرض ثابت، واستخدم str_repeat() لتكرار نمط نصي بعدد محدد من المرات.

  • تدعم str_pad($str, $length, $padStr, $padType) الحشو لليمين STR_PAD_RIGHT (الافتراضي)، ولليسار STR_PAD_LEFT، وللجانبين STR_PAD_BOTH.
  • إذا كان طول النص الأصلي مساوياً أو أكبر من الطول المطلوب، تُرجع str_pad() النص الأصلي كما هو دون اقتطاعه.
  • تبني str_repeat("=", 24) الفواصل النصية وأشرطة التقدم ورموز التغطية بنظافة.

يحشو STR_PAD_LEFT الرقم "85" بالأصفار لليسار، ويوسّط STR_PAD_BOTH كلمة " STATUS "، وتكرر str_repeat("*", 4) النجمة 4 مرات.

مخطط تدفق التنفيذ العملي لقسم حشو الأرقام والأكواد وتكرارها بـ str_pad و str_repeat في لغة PHP
PHP
<?php
$orderId = "85";
$sku = "SKU-" . str_pad($orderId, 5, "0", STR_PAD_LEFT);
$banner = str_pad(" STATUS ", 16, "=", STR_PAD_BOTH);
$stars = str_repeat("*", 4) . "-9921";

echo "$sku\n";
echo "$banner\n";
echo "Card: $stars\n";

تستخدم رسائل البريد النصية وسجلات الطرفية الدالة wordwrap() لتقسيم الأسطر الطويلة عند حدود الكلمات، بينما تستخدم صفحات العرض الدالة nl2br() لتحويل \n إلى وسوم <br>.

  • تقسم wordwrap($text, 28, "\n", false) الأسطر عند عرض 28 حرفاً دون قطع الكلمات من منتصفها.
  • تمرير true كمعامل رابع في wordwrap() يجبر الدالة على شطر الكلمات الطويلة التي تتجاوز العرض المحدد.
  • تُدرج nl2br($text, false) وسم HTML5 القياسي <br> قبل كل سطر جديد.

تقسم wordwrap($note, 20, "\n") الجملة إلى 3 أسطر لا يتجاوز كل منها 20 حرفاً، وتضيف nl2br($wrapped, false) وسم <br> عند كل سطر جديد.

PHP
<?php
$note = "Deploy PHP 8.4 security patch tonight";
$wrapped = wordwrap($note, 20, "\n");
$htmlNote = nl2br($wrapped, false);

echo $wrapped . "\n---\n";
echo $htmlNote . "\n";

اجمع بين number_format() لعرض فواصل الآلاف المقروءة بشرياً، وبين sprintf() لبناء القوالب النصية الدقيقة المحشوة بالأصفار أو المحددة الخانات العشرية.

  • تُنتج sprintf("%06d", 42) النص "000042" كبديل مختصر لدالة str_pad() مع الأعداد الصحيحة.
  • تنسق sprintf("%.2f%%", 14.5) النسبة المئوية بخانتين عشريتين، ويُستخدم الرمز المزدوج %% لطباعة علامة % حرفياً.
  • تنسق number_format($amount, 2, ".", ",") المبالغ المالية بخانتين عشريتين وفواصل آلاف.

يحشو الرمز %05d الرقم 93 ليصبح 00093، ويطبع %.1f%% النسبة 15.0%، ويدرج %s المبلغ المنسق.

الدالةالوظيفة الأساسيةالسلوك / الخيار الأهممثال المخرجات
str_replace($a, $b, $s, $cnt)Replace all matchesSets $cnt to replacement count"a-b-c"
substr_replace($s, $r, $pos, 0)Positional edit / insert$length = 0 inserts without deleting"PHP8.4"
str_pad($s, $len, "0", STR_PAD_LEFT)Fixed-width paddingNever truncates if $s is already longer"00042"
nl2br($s, false)Newlines to HTML breaksfalse outputs HTML5 <br>"Line1<br>\nLine2"
sprintf("%.2f%%", $rate)Typed template stringUse %% for literal percent sign"15.00%"
PHP
<?php
$subtotal = 4850.75;
$taxRate = 15.0;
$invoiceNo = 93;

$formattedSub = number_format($subtotal, 2, ".", ",");
$line = sprintf("INV-%05d | Tax: %.1f%% | Net: $%s", $invoiceNo, $taxRate, $formattedSub);

echo $line . "\n";
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

اجمع بين number_format() لعرض فواصل الآلاف المقروءة بشرياً، وبين sprintf() لبناء القوالب النصية الدقيقة المحشوة بالأصفار أو المحددة الخانات العشرية. تُنتج sprintf("%06d", 42) النص "000042" كبديل مختصر لدالة str_pad() مع الأعداد الصحيحة. تنسق sprintf("%.2f%%", 14.5) النسبة المئوية بخانتين عشريتين، ويُستخدم الرمز المزدوج %% لطباعة علامة % حرفياً. تنسق number_format($amount, 2, ".", ",") المبالغ المالية بخانتين عشريتين وفواصل آلاف.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 String Replace & Format استبدال وتنسيق النصوص
استبدل وقسّم ونسّق السلاسل النصية في PHP 8 باستخدام str_replace وsubstr_replace وexplode وimplode وstr_pad وnumber_format.
للمراجعة
02 Replacing Matches with str_replace الاستبدال الحساس وغير الحساس لحالة الأحرف بـ str_replace
المفهوم الأساسي لقسم الاستبدال الحساس وغير الحساس لحالة الأحرف بـ str_replace في لغة PHP الحديثة.
للمراجعة
03 Positional Edits with substr_replace الاستبدال والحقن الموضعي عبر substr_replace
الصياغة البرمجية والتطبيق العملي المباشر لقسم الاستبدال والحقن الموضعي عبر substr_replace.
للمراجعة
04 Splitting and Joining with explode and implode تحويل النص لمصفوفة والعكس بـ explode و implode
قواعد التحقق وأفضل الممارسات القياسية الخاصة بقسم تحويل النص لمصفوفة والعكس بـ explode و implode.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 PHP PHP
PHP: Hypertext Preprocessor
لغة البرمجة النصية على جانب الخادم لبناء تطبيقات الويب الديناميكية وواجهات البرمجة.
للمراجعة
02 CLI CLI
Command-Line Interface
واجهة سطر الأوامر التي تتيح تشغيل ملفات PHP مباشرة عبر الطرفية.
للمراجعة
03 FPM FPM
FastCGI Process Manager
مدير عمليات FastCGI عالي الأداء لمعالجة طلبات خادم الويب في PHP.
للمراجعة
04 HTML HTML
HyperText Markup Language
لغة الترميز القياسية التي يولدها محرك PHP ويرسلها إلى متصفح العميل بعد التنفيذ.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم الاستبدال الحساس وغير الحساس لحالة الأحرف بـ str_replace للتحقق من المخرجات.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم الاستبدال والحقن الموضعي عبر substr_replace وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 1أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

كيف تدرج حرفاً داخل سلسلة نصية عند الفهرس 3 باستخدام substr_replace() دون حذف أي حرف موجود؟

تمرير الطول 0 يخبر substr_replace() بعدم حذف أي حرف وإدراج النص الجديد في الموقع المحدد.

02

ماذا تُرجع الدالة str_pad("CloseTag", 5, "*") عندما يكون طول النص الأصلي 8 أحرف (أكبر من 5)؟

إذا كان الطول المستهدف أصغر من أو يساوي طول النص الأصلي، تُرجع الدالة النص كاملاً دون قص.

03

كيف تطبع علامة النسبة المئوية الحرفية (%) داخل قالب دالة sprintf()؟

في قوالب sprintf يتم مضاعفة الرمز %% لطباعة علامة % واحدة حرفياً.

04

ماذا يحدث في PHP 8 عند استدعاء explode("", "hello") بفاصل نصي فارغ؟

في PHP 8 يطلق تمرير "" لدالة explode() خطأ ValueError (وتُستخدم mb_str_split() لتقسيم الأحرف).

05

ما وظيفة المعامل الثاني false في استدعاء الدالة nl2br($text, false)؟

المعامل الثاني يتحكم بصيغة XHTML، ووضعه على false ينتج وسم HTML5 القياسي <br>.

06

كيف يمكنك معرفة عدد مرات الاستبدال التي نفذتها الدالة str_replace($search, $replace, $subject, $count)؟

يُمرر المعامل الرابع الاختياري بالمرجع ليحفظ عدد مرات الاستبدال الفعلية.

07

ماذا تُرجع الدالة str_repeat("=-", 3)؟

تكرر النمط النصي "=-" ثلاث مرات متتالية.

08

ماذا تُرجع الدالة sprintf("%04d", 7)؟

ينسق الرمز %04d العدد الصحيح مع حشوه بالأصفار على اليسار ليصبح من 4 خانات.