في هذا الدرس 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
$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
$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
$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 مرات.
<?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
$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 matches | Sets $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 padding | Never truncates if $s is already longer | "00042" |
nl2br($s, false) | Newlines to HTML breaks | false outputs HTML5 <br> | "Line1<br>\nLine2" |
sprintf("%.2f%%", $rate) | Typed template string | Use %% for literal percent sign | "15.00%" |
<?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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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 ويرسلها إلى متصفح العميل بعد التنفيذ.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم الاستبدال الحساس وغير الحساس لحالة الأحرف بـ str_replace للتحقق من المخرجات.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم الاستبدال والحقن الموضعي عبر substr_replace وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
كيف تدرج حرفاً داخل سلسلة نصية عند الفهرس 3 باستخدام substr_replace() دون حذف أي حرف موجود؟
تمرير الطول 0 يخبر substr_replace() بعدم حذف أي حرف وإدراج النص الجديد في الموقع المحدد.
ماذا تُرجع الدالة str_pad("CloseTag", 5, "*") عندما يكون طول النص الأصلي 8 أحرف (أكبر من 5)؟
إذا كان الطول المستهدف أصغر من أو يساوي طول النص الأصلي، تُرجع الدالة النص كاملاً دون قص.
كيف تطبع علامة النسبة المئوية الحرفية (%) داخل قالب دالة sprintf()؟
في قوالب sprintf يتم مضاعفة الرمز %% لطباعة علامة % واحدة حرفياً.
ماذا يحدث في PHP 8 عند استدعاء explode("", "hello") بفاصل نصي فارغ؟
في PHP 8 يطلق تمرير "" لدالة explode() خطأ ValueError (وتُستخدم mb_str_split() لتقسيم الأحرف).
ما وظيفة المعامل الثاني false في استدعاء الدالة nl2br($text, false)؟
المعامل الثاني يتحكم بصيغة XHTML، ووضعه على false ينتج وسم HTML5 القياسي <br>.
كيف يمكنك معرفة عدد مرات الاستبدال التي نفذتها الدالة str_replace($search, $replace, $subject, $count)؟
يُمرر المعامل الرابع الاختياري بالمرجع ليحفظ عدد مرات الاستبدال الفعلية.
ماذا تُرجع الدالة str_repeat("=-", 3)؟
تكرر النمط النصي "=-" ثلاث مرات متتالية.
ماذا تُرجع الدالة sprintf("%04d", 7)؟
ينسق الرمز %04d العدد الصحيح مع حشوه بالأصفار على اليسار ليصبح من 4 خانات.