اذهب إلى المحتوى

السؤال

نشر (معدل)

السلام عليكم

احد الاخوة الافاضل قدم لي كود يقوم بتحويل عنوان الموضوع الى كلمات دليلية

<title><?=$row['title'] ?></title>
<?php
$keywords = explode(' ', $row['title']);
$keywords = implode(' ,', $keywords);
?>
<meta type="keywords" content="<?=$keywords ?>" />

هل يمكن تعديل الكود لكي

                              1 - لا يطبع الكلمات التى تتكون من حرفين او حرف واحد

                              2 - لا يطبع الرموز والارقام

                              3 - لا يطبع الكلمات المتكررة

تم التعديل في بواسطة Hamada Ahmed

Recommended Posts

  • 1
نشر
<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
نشر
بتاريخ الآن قال Hamada Ahmed:

يعمل مع اللغة الانجليزية فقط لكن مع اللغة العربية يتم طباعة اى كلمة مثل من او فى

السبب في ذلك أن الترميز العام لديك ليس UTF-8 بالرغم من أنك تستعمل محارف عربية، لتحديد ذلك يجب إضافة وسيط آخر للدالة mb_strlen كالتالي:

function myFilter($var)
{
  return mb_strlen($var, 'UTF-8') > 2;
}

 

  • 0
نشر
بتاريخ 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
نشر
بتاريخ 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;
}

 

  • 0
نشر
بتاريخ 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;
}

 

عذرا اخى الكلمات التي تحوي حرفين يتم طباعتها مثل في ومن لماذا

  • 0
نشر
بتاريخ 5 ساعات قال Hamada Ahmed:

عذرا اخى الكلمات التي تحوي حرفين يتم طباعتها مثل في ومن لماذا

إن الدالة strlen لا تقوم بعد الأحرف العربية بسبب طبيعة ترميزها المختلفة و لتعمل على ذلك بشكل صحيح يوجد الدالة 

mb_strlen والتي تتعرف على عدد بايتات المحرف في الذاكرة و تعيد طول السلسلة الصحيحة

function myFilter($var)
{
  return mb_strlen($var)>2;
}

أرجو تجريب هذا التعديل

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...