Khaled Mohammed7 نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 لقد قمت بعمل دالة تقوم باقتطاع النص و تحويله بهذا الشكل 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 شرف الدين حفني نشر 28 أغسطس 2021 أرسل تقرير نشر 28 أغسطس 2021 حسب ما فهمت انك تريد ان تبدل المسافات بعلامة - صحيح؟ إذا كان الأمر كذلك فان سبب المشكلة لديك ان كلا من السطرين $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 اقتباس
السؤال
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), '-'); }
ولكن لم انجح في تحويل الجملة و ان اضع بين كل كلمة و كلمة -
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.