بالنسبة لسؤالك الثاني حول امكانية تحديد عدد الكلمات فالجواب نعم ....
كيف؟؟؟
هذا يعتمد على طريقة عمل الفانكشن ...
تابع معي هذا الشرح:
لدينا هذه الدالة المعرفة من قبلنا :
كود PHP:
function show_word($note)
{
$w = explode(' ', $note);
print join(' ',array_slice($w, 0, ceil(count($w) / 2)));
}
حتى نتمكن من تعديلها بما يتوافق مع حاجاتنا يجب علينا في البداية ان نفهم اداء الدالة من الداخل ..
الخطوة الأولى هي معرفة دوال php الأساسية المستخدمة في هذه الدالة ....
الدوال الأساسية هي:
كود PHP:
explode
join
array_slice
ceil
count
print
بداية يجب ان نعرف وظيفة كل دالة من هذه الدوال وأيضا نعرف معاملات كل دالة
explode : هذه الدالة مهمتها هي انتاج مصفوفة array عبر قسمة أو كسر جملة محرفية ...
وهي تأخذ معاملين .. الأول قيمة محرفية التي سيتم تقسيم النص عند الوصول إليها .. والثاني هي الجملة او النص التي سيتم تقسيمه ..
في مثالنا تجد أننا قما بقسمة النص إعتمادا على ' ' أي على الفراغات .. فأصبحت كل كلمة بالتالي تشكل عنصرا واحدا في المصفوفة ...
مثال آخر:
كود PHP:
$test = "this/is/a/test/only";
$test1 = explode("/" , "this/is/a/test/only");
print_r($test1);
ستكون نتيجة هذا المثال عبارة عن مصفوفة بها 5 عناصر كل عنصر يحوي احدى كلمات النص .. لاحظ أن "/" لن تعود موجودة في المصفوفة لأنها كانت القيمة المحرفية التي اعتمدنا عليها في التقطيع ...
join : وهي على النقيض من explode تماما .. تقوم هذه الدالة بوضع عناصر المصفوفة في جملة محرفية واحدة ... وتفصل بين كل عنصر والذي يليه بقيمة نحددها نحن ..
مثال :
كود PHP:
$test = array('I', 'love', 'my', 'country');
$test1 = join(' ', $test);
echo $test1;
سيكون الناتج "I love my country"
لاحظ اننا في المعامل الاول للدالة join استخدمنا ' ' والتي تعني وضع مسافة فارغة بين العبارات
ceil : هذه الدالة العدد الصحيح التالي للقيمة الرقمية المدخلة وهي تأخذ معاملا واحدا هو القيمة العدديدة المراد معرفة اقرب رقم صحيح تالي لها
مثلا عند استخدام هذا الكود
سيكون الناتج 10
لكن عند استخدام
كود PHP:
echo ceil(10.1);
سيكون الناتج 11
هذه الدالة تفيد عندما لا نرغب في الحصول على كسور في نواتج الجمع والقسمة والضرب وغيرها
count : تقوم بعد عناصر المصفوفة وتأخذ معاملا واحدا هو إسم المصفوفة
كود PHP:
$array= array('I', 'love', 'my', 'country');
echo count($array);
الناتج = 4
array_slice : تقوم هذه الدالة بإعادة دالة تحوي على عدد معين من عناصر دالة أخرى ...
وهي تأخذ اربعة معاملات .. اثنان الزاميتان والباقي اختيارية .. المعاملات هي:
1 / المصفوفة التي سيتم الاجتزاء منها
2 / رقم العنصر الذي سيتم بدء الاجتزاء منه
3 / عدد العناصر التي سيتم الاجتزاؤها
4 / قيمة trueأو false تحدد اذا كنا نرغب في اعادة ترتيب فهارس المصفوفة الجديدة..
اذا لم نضع قيمة لعدد العغناصر فإنه سيتم وضع جميع العناصر التي تلي العنصر المحدد بالرقم 2
مثال:
كود PHP:
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2); // ستعيد "c", "d", "e" في مصفوفة $output
$output = array_slice($input, 2, 2); // ستعيد "d" في مصفوفة $output
$output = array_slice($input, 0, 3); // returns "a", "b", and "c" في مصفوفة $output
الآن لدينا هذه الدالة:
كود PHP:
function show_word($note)
{
$w = explode(' ', $note);
print join(' ',array_slice($w, 0, ceil(count($w) / 2)));
}
هذه الدالة تأخذ معاملا واحدا هو النص الذي نريد نصفه ..
نقوم بإنشاء المصفوفة $w التي ستحوي كلمات النص
كود PHP:
$w = explode(' ', $note);
ثم سنقوم بعد عناصر هذه المصفوفة
سنقسم العدد على 2 (لأننا نريد نصف العدد
ربما كان عدد عناصر المصفوفة مفردا ... وبالتالي سيحوي ناتج القسمة على كسور .. دعنا نتخلص من الكسور ونجبر القيمة إلى اقرب عدد صحيح
كود PHP:
ceil(count($w) / 2)
حسنا .. أصبحنا الآن نعرف ماهو نصف عدد كلمات النص ... سنقوم الآن بإنشاء مصفوفة جديدة تحوي فقط نصف الكلمات الأولى من النص الاصلي
كود PHP:
array_slice($w, 0, ceil(count($w) / 2))
الآن سنقوم بجمع عناصر المصفوفة الجديدة في جملة نصية عادية .. وسنفصل بين العناصر بمسافة مفردة
كود PHP:
join(' ',array_slice($w, 0, ceil(count($w) / 2)))
سنطبع الناتج
كود PHP:
print join(' ',array_slice($w, 0, ceil(count($w) / 2)));
إلى هنا انتهى تشريح هذه الدالة .. في ردي التالي سنعدل هذه الدالة لعرض عدد معين من كلمات النص المدخل