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

السؤال

نشر (معدل)

السلام عليكم

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

<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
نشر
بتاريخ 14 دقائق مضت قال Hamada Ahmed:

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

هل يمكنك توفير صورة أو معلومات أكثر، شكرا لك

  • 0
نشر
بتاريخ 4 دقائق مضت قال Wael Aljamal:

هل يمكنك توفير صورة أو معلومات أكثر، شكرا لك

p_18940nmz21.png

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

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

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

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

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

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

  • 0
نشر

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...