Hamada Ahmed نشر 9 مارس 2021 أرسل تقرير نشر 9 مارس 2021 (معدل) السلام عليكم احد الاخوة الافاضل قدم لي كود يقوم بتحويل عنوان الموضوع الى كلمات دليلية <title><?=$row['title'] ?></title> <?php $keywords = explode(' ', $row['title']); $keywords = implode(' ,', $keywords); ?> <meta type="keywords" content="<?=$keywords ?>" /> هل يمكن تعديل الكود لكي 1 - لا يطبع الكلمات التى تتكون من حرفين او حرف واحد 2 - لا يطبع الرموز والارقام 3 - لا يطبع الكلمات المتكررة تم التعديل في 9 مارس 2021 بواسطة Hamada Ahmed 1 اقتباس
1 Wael Aljamal نشر 9 مارس 2021 أرسل تقرير نشر 9 مارس 2021 <title><?=$row['title'] ?></title> <?php function myFilter($var) { return mb_strlen($var, 'UTF-8') > 2; // تم تعديلها لتتعرف على الأحرف العربية } $keywords = explode(' ', $row['title']); $keywords = array_filter($keywords,"myFilter"); $keywords = array_unique($keywords); $keywords = implode(' ,', $keywords); ?> <meta type="keywords" content="<?=$keywords ?>" /> array_filter هو دالة في php تستقبل الدالة التي قمت بتعريفها سابقا و التي تعيد العنصر في حال كان عدد محارفه أكبر من 2 (شرط الفلترة/التصنيف) array_unique تعيد العناصر من مصفوفة بدون تكرار بالنسبة لسؤالك بتاريخ 2 ساعات قال Hamada Ahmed: 2 - لا يطبع الرموز والارقام ماذا تقصد، هل على مستوى الكلمة (نتجاهل الكلمة التي تحوي على غير الحروف) أو نحذف الحروف و نبقي على ما تبقى من الكلمة، أرجو توفير مثال 1 اقتباس
0 Hamada Ahmed نشر 9 مارس 2021 الكاتب أرسل تقرير نشر 9 مارس 2021 بتاريخ 47 دقائق مضت قال Wael Aljamal: <title><?=$row['title'] ?></title> <?php function myFilter($var) { return count($var)>2; } $keywords = explode(' ', $row['title']); $keywords = array_filter($keywords,"myFilter"); $keywords = array_unique($keywords); $keywords = implode(' ,', $keywords); ?> <meta type="keywords" content="<?=$keywords ?>" /> array_filter هو دالة في php تستقل الدالة التي قمت بتعريفها سابقا و التي تعيد العنصر في حال كان عدد محارفه أكبر من 2 array_unique تعيد العناصر من مصفوفة بدون تكرار بالنسبة لسؤالك ماذا تقصد، هل على مستوى الكلمة (نتجاهل الكلمة التي تحوي على غير الحروف) أو نحذف الحروف و نبقي على ما تبقى من الكلمة، أرجو توفير مثال هناك خطأ Warning: count(): Parameter must be an array or an object that implements Countable in C:\xampp\htdocs\index.php اقتباس
0 Wael Aljamal نشر 9 مارس 2021 أرسل تقرير نشر 9 مارس 2021 بتاريخ 2 دقائق مضت قال Hamada Ahmed: Warning: count(): Parameter must be an array or an object that implements Countable in C:\xampp\htdocs\index.php صحيح، هذا في الدالة count حيث تستقبل مصفوفة أو غرض قابل للعد، بينما في مثالنا تستقبل سلسلة نصية أي يجب اسخدام الدالة strlen. function myFilter($var) { return strlen($var)>2; } 1 اقتباس
0 Hamada Ahmed نشر 9 مارس 2021 الكاتب أرسل تقرير نشر 9 مارس 2021 بتاريخ 1 دقيقة مضت قال Wael Aljamal: صحيح، هذا في الدالة count حيث تستقبل مصفوفة أو غرض قابل للعد، بينما في مثالنا تستقبل سلسلة نصية أي يجب اسخدام الدالة strlen. function myFilter($var) { return strlen($var)>2; } شكرا اخى الفاضل تم بنجاح بتاريخ الآن قال Hamada Ahmed: شكرا اخى الفاضل تم بنجاح اما عن الرموز والارقام فغالبا قيمتها اقل من 2 فهي لن تضاف هذا كان غائب عني بتاريخ 6 دقائق مضت قال Wael Aljamal: صحيح، هذا في الدالة count حيث تستقبل مصفوفة أو غرض قابل للعد، بينما في مثالنا تستقبل سلسلة نصية أي يجب اسخدام الدالة strlen. function myFilter($var) { return strlen($var)>2; } عذرا اخى الكلمات التي تحوي حرفين يتم طباعتها مثل في ومن لماذا 1 اقتباس
0 Wael Aljamal نشر 9 مارس 2021 أرسل تقرير نشر 9 مارس 2021 بتاريخ 14 دقائق مضت قال Hamada Ahmed: عذرا اخى الكلمات التي تحوي حرفين يتم طباعتها مثل في ومن لماذا هل يمكنك توفير صورة أو معلومات أكثر، شكرا لك 1 اقتباس
0 Hamada Ahmed نشر 9 مارس 2021 الكاتب أرسل تقرير نشر 9 مارس 2021 بتاريخ 4 دقائق مضت قال Wael Aljamal: هل يمكنك توفير صورة أو معلومات أكثر، شكرا لك 1 اقتباس
0 Wael Aljamal نشر 9 مارس 2021 أرسل تقرير نشر 9 مارس 2021 بتاريخ 5 ساعات قال Hamada Ahmed: عذرا اخى الكلمات التي تحوي حرفين يتم طباعتها مثل في ومن لماذا إن الدالة strlen لا تقوم بعد الأحرف العربية بسبب طبيعة ترميزها المختلفة و لتعمل على ذلك بشكل صحيح يوجد الدالة mb_strlen والتي تتعرف على عدد بايتات المحرف في الذاكرة و تعيد طول السلسلة الصحيحة function myFilter($var) { return mb_strlen($var)>2; } أرجو تجريب هذا التعديل 1 اقتباس
0 Hamada Ahmed نشر 9 مارس 2021 الكاتب أرسل تقرير نشر 9 مارس 2021 يعمل مع اللغة الانجليزية فقط لكن مع اللغة العربية يتم طباعة اى كلمة مثل من او فى اقتباس
1 Wael Aljamal نشر 9 مارس 2021 أرسل تقرير نشر 9 مارس 2021 بتاريخ الآن قال Hamada Ahmed: يعمل مع اللغة الانجليزية فقط لكن مع اللغة العربية يتم طباعة اى كلمة مثل من او فى السبب في ذلك أن الترميز العام لديك ليس UTF-8 بالرغم من أنك تستعمل محارف عربية، لتحديد ذلك يجب إضافة وسيط آخر للدالة mb_strlen كالتالي: function myFilter($var) { return mb_strlen($var, 'UTF-8') > 2; } 1 اقتباس
السؤال
Hamada Ahmed
السلام عليكم
احد الاخوة الافاضل قدم لي كود يقوم بتحويل عنوان الموضوع الى كلمات دليلية
هل يمكن تعديل الكود لكي
1 - لا يطبع الكلمات التى تتكون من حرفين او حرف واحد
2 - لا يطبع الرموز والارقام
3 - لا يطبع الكلمات المتكررة
تم التعديل في بواسطة Hamada Ahmed9 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.