• 0

عمل دالة اقتطاع النص في php

لقد قمت بعمل دالة تقوم باقتطاع النص و تحويله بهذا الشكل 

www.mywebsite.com/string-string

و الدالة هي 

function seo($string)
{
	$string = trim($string);

	$string = preg_replace('#[^\w]#', ' ' , $string);

	$string = preg_replace('#[\s]+#', ' ', $string);

	return trim(strtolower($string), '-');
}

ولكن لم انجح في تحويل الجملة و ان اضع بين كل كلمة و كلمة -

2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

حسب ما فهمت انك تريد ان تبدل المسافات بعلامة - صحيح؟

إذا كان الأمر كذلك فان سبب المشكلة لديك ان كلا من السطرين 


	$string = preg_replace('#[^\w]#', ' ' , $string);

	$string = preg_replace('#[\s]+#', ' ', $string);

كل ما يفعلونه انهم يقومون بتحويل المسافات, الى مسافات مرة اخرى , وهذا لان الرمز \s يرمز للمسافات

والرمز \w يرمز لاى رمز غير الحروف الابجدية, فاذا انتا تقوم بتحويل الرموز والمسافات الى مسافات مرة اخرى بدل من تحويلهم الى شرطة -

والسطر الاخير والاول 

$string = trim($string);
return trim(strtolower($string), '-')

وظيفتهم أنهم يمسحون المسافات من الجانب الايمن والايسر بفضل الدالة trim ولكن ماذا عن المسافات فى المنتصف بين الكلام؟

الحل ان تقم باستخدام دالة preg_replace كما فعلت سابقا, ولكن تقم باستبدالهم بشرطة - بدلاً من تبديلهم بمسافات كما في الكود الاتي:

function seo($string)
{
	$string = trim($string);

	$string = preg_replace('/\s+/', '-', $string);

	return strtolower($string);
}

 

3 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن