sayres
شنبه 08 آبان 1389, 08:45 صبح
<?php
// Requested URL
$url = $_SERVER['REQUEST_URI'];
// Removes Apllication root from url
$url = str_replace("/workspace/test/", "", $url);
//echo $url;
//post/2
preg_match('/^posts\/(?P<id>\d+)$/', $url, $match);
print_r($match);
?>
چرا خروجی print_r($match) یک آرایه خالیه Array ( ) ؟؟؟؟
در صورتی که باید :
Array ( [0] => posts/2 [id] => 2 [1] => 2 )
باشه......
این فایل به نام index.php هست وبا یک فایل .htaccess با وارد شدن به پوشه test مستقیم index.php اجرا میشه و نیازی نیست index.php بنویسی..
اینم .htaccess :
RewriteEngine On
RewriteRule !(\.gif|\.png|\.jpe?g|\.css|\.js|\.php|^public/.*)$ index.php [nocase,last]
این $url = $_SERVER['REQUEST_URI']; آدرس پوشهیی که فایل index.php داخلشه همون root نشون میده و داخل متغیر $url میریزه.از من اینه :
/workspace/test/
و $url = str_replace("/workspace/test/", "", $url); از متغیر url این /workspace/test/ حذف میکنه...
من داخل addressbare browser ام این posts/2 مینویسم که طبق کد بالا باید posts/2 تو $url ذخیره بشه.
و طبق این :
preg_match('/^posts\/(?P<id>\d+)$/', $url, $match);
print_r($match);
باید تو آرایه این :
Array ( [0] => posts/2 [id] => 2 [1] => 2 )
بنویسه ولی نمینویسه و آرایه خالیه..Array ( ) ..
مشکل از کجاست؟؟
در صورتی که این :
<?php
$pattern ="posts/2";
preg_match('/^posts\/(?P<id>\d+)$/', $pattern, $match);
print_r($match);
//Array ( [0] => posts/2 [id] => 2 [1] => 2 )
?>
جواب میده....
// Requested URL
$url = $_SERVER['REQUEST_URI'];
// Removes Apllication root from url
$url = str_replace("/workspace/test/", "", $url);
//echo $url;
//post/2
preg_match('/^posts\/(?P<id>\d+)$/', $url, $match);
print_r($match);
?>
چرا خروجی print_r($match) یک آرایه خالیه Array ( ) ؟؟؟؟
در صورتی که باید :
Array ( [0] => posts/2 [id] => 2 [1] => 2 )
باشه......
این فایل به نام index.php هست وبا یک فایل .htaccess با وارد شدن به پوشه test مستقیم index.php اجرا میشه و نیازی نیست index.php بنویسی..
اینم .htaccess :
RewriteEngine On
RewriteRule !(\.gif|\.png|\.jpe?g|\.css|\.js|\.php|^public/.*)$ index.php [nocase,last]
این $url = $_SERVER['REQUEST_URI']; آدرس پوشهیی که فایل index.php داخلشه همون root نشون میده و داخل متغیر $url میریزه.از من اینه :
/workspace/test/
و $url = str_replace("/workspace/test/", "", $url); از متغیر url این /workspace/test/ حذف میکنه...
من داخل addressbare browser ام این posts/2 مینویسم که طبق کد بالا باید posts/2 تو $url ذخیره بشه.
و طبق این :
preg_match('/^posts\/(?P<id>\d+)$/', $url, $match);
print_r($match);
باید تو آرایه این :
Array ( [0] => posts/2 [id] => 2 [1] => 2 )
بنویسه ولی نمینویسه و آرایه خالیه..Array ( ) ..
مشکل از کجاست؟؟
در صورتی که این :
<?php
$pattern ="posts/2";
preg_match('/^posts\/(?P<id>\d+)$/', $pattern, $match);
print_r($match);
//Array ( [0] => posts/2 [id] => 2 [1] => 2 )
?>
جواب میده....