PDA

View Full Version : سوال: خالی بودن آرایه



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 )




?>

جواب میده....

funpatogh
شنبه 08 آبان 1389, 21:02 عصر
این index.php که گفتید توی فولدر test ذخیره شده؟

sayres
یک شنبه 09 آبان 1389, 09:49 صبح
آره تو پوشه test هست.