۶ Yousef Rishehri
مشکل در ساخت Regex از uri
جامعه پی اچ پی ایجاد شده در ۰۲ تیر ۱۴۰۱

من وقتی میخوام این رو تبدیل کنم

$route = '/post/{slug}';

به این

^\\/post\\/(?<slug>[-%\\w]+)$

و اینم پترنمه

$pattern = '/^' . str_replace(['/','{','}'],['\\/','(?<','>[-%\\w]+)'], $route) . '$/';

خروجی کدم بدین شکل میشه

/^\\/post\\/(?[-%\\w]+)$/

بجای slug برای ؟ میاره مشکل از کجاست ؟!

سلام دوست عزیز

چون روند اجراتون رو نمیدونستم، براتون نمونه کد میذارم که به این شکل تست کنید و از روند اجراتون مطمئن باشید

$uri = '/category/{topic}/all';
$pattern = '/^' . str_replace(['/', '{', '}'], ['\\/', '(?<', '>[-%\\w]+)'], $uri) . '$/';
$result = preg_match($pattern, '/category/sports/all', $matches);
var_dump($matches);


محمد گازری ۰۲ تیر ۱۴۰۱، ۰۷:۰۸

بله این چیزی که شما میگید درسته ولی با چیزی که آقای آوند میگن مشکل داره و کار نمیکنه همن مشکل بالایی رو دارم و کار نمیکنه

من اینجا جواب درست رو بهم نمیده که وقتی دارم از str_replace استفاده میکنم و regex رو تولید میکنم از عقم بجای slug بهم علامت سوال ؟ میده !!

یعنی زمانی که من این رو دارم

/post/{slug}

و میخوام regex شو تولید کنم و توی php از str_replace اسفتاده میکنم در اینجا

str_replace(['/', '{', '}'], ['\\/', '(?<', '>[-%\\w]+)'], $uri)

میاد slug رو کلا پاک میکنه و بجاش علامت سوال قرار میده یعنی تبدیل میشه به ؟

حالا زمانی که دارم تست میکنم

if ($this->regex_match($route)) {
    return $route;
}

تا بدونم درست هستش یا نه ازم قبول نمیکنه

سوال من اینه بظرم شما درست متوجه نشدید !!

Yousef Rishehri ۰۲ تیر ۱۴۰۱، ۰۷:۵۳

پروژتون رو پیوست کنید

محمد گازری ۰۲ تیر ۱۴۰۱، ۰۹:۵۷

خدمت شما

Yousef Rishehri ۰۲ تیر ۱۴۰۱، ۱۰:۴۸

من تونستم به جواب برسم اشتباه از طرف من بوده ممنون از کمک شما 3>

Yousef Rishehri ۰۲ تیر ۱۴۰۱، ۱۱:۰۰

بسیارعالی دوست عزیز

میتونید تاپیک رو بشکل حل شده در بیارید

موفق باشید ??

بهترین پاسخ
محمد گازری ۰۲ تیر ۱۴۰۱، ۱۱:۱۳