۳ sevda
مشکل replace در مرورگر
جامعه پی اچ پی ایجاد شده در ۱۸ بهمن ۱۴۰۱

با سلام و احترام

مشکلی که هست اینه که str_replace() به درستی تو مروگر انجام نمیشه و من دیدم که سوال چند نفر دیگه هم بود. داخل ترمینال و یا output خود vscode درسته اما توی مرورگر به شکل زیر هست:

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

در حالی که باید به این شکل میشد:

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

من الان فاصله گذاشتم داخل پترن حل شد جواب رو هم نوشتم که بقیه هم اگه مثل من به مشکل خوردن حل شه:

به این صورت که :

دقت کنین که از هرطرف ' ' فاصله بدین و به کوتیشن عبارت زیر رو نچسبونین:

' (?< '
$pattern = '/^'.str_replace(['/','{','}'],['\\/',' (?< ','>[-%\\w]+)'],$route).'$/';
sevda ۱۸ بهمن ۱۴۰۱، ۱۶:۰۹

اما فکر کنم منطقا غلط باشه چون جای خالی میفته و preg_match() درست نمیشه

ولی غیر اون هم جواب نمیده

میشه لطفا راهنمایی کنین؟


sevda ۱۸ بهمن ۱۴۰۱، ۱۶:۲۵

سلام،

اگر داخل مرورگر ctrl+u (view page source) بزنید، میبینید درست نمایش میده چون علامت کوچکتربزرگتر بهمراه عبارت جزئی از تگ محسوب میشه، توسط مرورگر رندر میشه. یا میتونید برای نمایش به این شکل بنویسید:

echo htmlspecialchars($pattern);

در نهایت نمایش روی مرورگر ملاک نیست.

اون قضیه ی که گفتید "فاصله ای میدید درست میشه" هم بخاطر اینه که در حالت فاصله توسط مرورگر به شکل علامت خونده میشه.

بهترین پاسخ
محسن موحد ۱۸ بهمن ۱۴۰۱، ۱۶:۲۷