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

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

Khaled Mohammed7

السؤال

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...