📘 الدرس 10: التعامل مع النصوص (Strings) في PHP بشكل موسع
النصوص Strings هي نوع البيانات الأكثر استخداماً في PHP. أي محتوى تقرأه من قاعدة البيانات، نموذج اتصال، أو رابط URL هو نص. إتقان دوال النصوص يعني أنك تقدر تنظف البيانات، تبحث فيها، تعدلها، وتعرضها بالشكل اللي تبيه.
💡 ملاحظة مهمة: PHP تتعامل مع النصوص بطريقتين: علامات تنصيص مزدوجة
" " تسمح بتحليل المتغيرات داخلها، وعلامات مفردة ' ' تعامل النص كنص حرفي أسرع وأخف.
🔹 1. إنشاء النصوص وطباعتها
تقدر تعرف النص مباشرة وتطبعه بـ echo أو print.
<?php
$text1 = "مرحباً بكم في مدونة الحسام";
$text2 = 'أهلاً وسهلاً';
echo $text1;
echo "<br>";
echo $text2;
?>
$text1 = "مرحباً بكم في مدونة الحسام";
$text2 = 'أهلاً وسهلاً';
echo $text1;
echo "<br>";
echo $text2;
?>
🔹 2. دوال قياس النصوص
| الدالة | الوظيفة | مثال |
|---|---|---|
strlen() | طول النص بالبايت | strlen("حسام") // 4 |
mb_strlen() | طول النص للعربي بشكل صحيح | mb_strlen("حسام", "UTF-8") // 4 |
str_word_count() | عدد الكلمات | str_word_count("PHP ممتع") |
<?php
$text = "تعلم PHP مع الحسام";
echo "الطول: " . mb_strlen($text, "UTF-8");
echo "<br>عدد الكلمات: " . str_word_count($text);
?>
$text = "تعلم PHP مع الحسام";
echo "الطول: " . mb_strlen($text, "UTF-8");
echo "<br>عدد الكلمات: " . str_word_count($text);
?>
🔹 3. دمج وتقسيم النصوص
الدمج: استخدم النقطة . لدمج نصين أو أكثر.
<?php
$first = "حسام";
$last = "الفقيه";
$full = $first . " . $last;
echo $full; // حسام الفقيه
?>
$first = "حسام";
$last = "الفقيه";
$full = $first . " . $last;
echo $full; // حسام الفقيه
?>
التقسيم: explode() تحول النص لمصفوفة، و implode() العكس.
<?php
$text = "تفاح,موز,برتقال,عنب";
$arr = explode(",", $text);
print_r($arr);
$newText = implode(" | ", $arr);
echo $newText; // تفاح | موز | برتقال | عنب
?>
$text = "تفاح,موز,برتقال,عنب";
$arr = explode(",", $text);
print_r($arr);
$newText = implode(" | ", $arr);
echo $newText; // تفاح | موز | برتقال | عنب
?>
🔹 4. تغيير حالة الأحرف
<?php
$text = "hello WORLD";
echo strtoupper($text); // HELLO WORLD
echo strtolower($text); // hello world
echo ucfirst($text); // Hello WORLD
echo ucwords($text); // Hello WORLD
?>
$text = "hello WORLD";
echo strtoupper($text); // HELLO WORLD
echo strtolower($text); // hello world
echo ucfirst($text); // Hello WORLD
echo ucwords($text); // Hello WORLD
?>
🔹 5. البحث والاستبدال داخل النص
| الدالة | الوظيفة |
|---|---|
strpos() | ترجع موقع النص أو false إذا لم يجده |
str_replace() | استبدال نص بنص آخر |
str_ireplace() | استبدال بدون حساسية لحالة الأحرف |
<?php
$text = "أنا أحب PHP وأتعلم PHP يومياً";
$pos = strpos($text, "PHP");
echo "موقع PHP الأول: $pos<br>";
$new = str_replace("PHP", "JavaScript", $text);
echo $new;
?>
$text = "أنا أحب PHP وأتعلم PHP يومياً";
$pos = strpos($text, "PHP");
echo "موقع PHP الأول: $pos<br>";
$new = str_replace("PHP", "JavaScript", $text);
echo $new;
?>
🔹 6. اقتطاع وقص النصوص
<?php
$text = "مرحباً بكم في درس النصوص في PHP";
echo substr($text, 0, 10); // مرحباً بكم
echo substr($text, 7); // من الحرف 7 للنهاية
echo substr($text, -5); // آخر 5 أحرف
?>
$text = "مرحباً بكم في درس النصوص في PHP";
echo substr($text, 0, 10); // مرحباً بكم
echo substr($text, 7); // من الحرف 7 للنهاية
echo substr($text, -5); // آخر 5 أحرف
?>
🔹 7. تنظيف النصوص من الفراغات
مهم جداً عند استقبال بيانات من النماذج.
<?php
$text = " مرحباً بكم ";
echo trim($text); // يحذف من الجهتين
echo ltrim($text); // يحذف من اليسار فقط
echo rtrim($text); // يحذف من اليمين فقط
?>
$text = " مرحباً بكم ";
echo trim($text); // يحذف من الجهتين
echo ltrim($text); // يحذف من اليسار فقط
echo rtrim($text); // يحذف من اليمين فقط
?>
🔹 8. دوال متقدمة مفيدة
| الدالة | الوظيفة |
|---|---|
md5() | تشفير النص لـ MD5 |
sha1() | تشفير النص لـ SHA1 |
htmlspecialchars() | تحويل الرموز الخاصة لحماية الموقع |
strip_tags() | حذف أكواد HTML من النص |
str_repeat() | تكرار النص |
<?php
$pass = "123456";
echo "MD5: " . md5($pass) . "<br>";
$html = "<script>alert('xss')</script>";
echo htmlspecialchars($html); // يحمي موقعك من XSS
echo str_repeat("*", 10); // **********
?>
$pass = "123456";
echo "MD5: " . md5($pass) . "<br>";
$html = "<script>alert('xss')</script>";
echo htmlspecialchars($html); // يحمي موقعك من XSS
echo str_repeat("*", 10); // **********
?>
🔹 9. مثال عملي: نظام تعليقات بسيط
هذا مثال يوضح كيف تستخدم أكثر من دالة مع بعض:
<?php
$comment = " مرحباً <script>alert('xss')</script> هذا تعليقي ";
// 1. حذف الفراغات
$comment = trim($comment);
// 2. حذف أكواد HTML الخطرة
$comment = strip_tags($comment);
// 3. تحويل الرموز الخاصة
$comment = htmlspecialchars($comment);
// 4. عرض التعليق
echo "التعليق بعد التنظيف: " . $comment;
?>
$comment = " مرحباً <script>alert('xss')</script> هذا تعليقي ";
// 1. حذف الفراغات
$comment = trim($comment);
// 2. حذف أكواد HTML الخطرة
$comment = strip_tags($comment);
// 3. تحويل الرموز الخاصة
$comment = htmlspecialchars($comment);
// 4. عرض التعليق
echo "التعليق بعد التنظيف: " . $comment;
?>
⚡ نصيحة أمان: دائماً نظف أي نص يجي من المستخدم قبل تخزينه أو عرضه. استخدم
trim() + strip_tags() + htmlspecialchars() مع بعض.
🔹 10. التعامل مع النصوص العربية
لازم تستخدم mb_* مع العربي عشان تتجنب مشاكل الترميز UTF-8.
<?php
$text = "اللغة العربية جميلة";
echo mb_strlen($text, "UTF-8"); // 18
echo mb_substr($text, 0, 5, "UTF-8"); // اللغة
echo mb_strpos($text, "عربية", 0, "UTF-8"); // 6
?>
$text = "اللغة العربية جميلة";
echo mb_strlen($text, "UTF-8"); // 18
echo mb_substr($text, 0, 5, "UTF-8"); // اللغة
echo mb_strpos($text, "عربية", 0, "UTF-8"); // 6
?>
💡 خلاصة الدرس:
1. استخدم
2. نظف مدخلات المستخدم دائماً
3. تعلم 10 دوال أساسية تكفيك لـ 90% من الشغل:
1. استخدم
mb_* مع النصوص العربية2. نظف مدخلات المستخدم دائماً
3. تعلم 10 دوال أساسية تكفيك لـ 90% من الشغل:
strlen, strpos, str_replace, substr, trim, explode, implode, strtolower, strtoupper, htmlspecialchars
© جميع الحقوق محفوظة - مدونة الحسام | al-hassam.blogspot.com
