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

السؤال

نشر

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

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), '-');
}

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

Recommended Posts

  • 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);
}

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...