PHP Regex rewrite.something to.PHP

PHP Regex rewrite.something to.PHP,php,regex,Php,Regex,我有一个php脚本: <?php if(isset($_GET['p'])) { $allowedPages = array(); $openDir = opendir('./pages/'); while(false !== ($entry = readdir($openDir))) { $allowedPages[] = $entry; } closedir($openDir); preg_replace('~\..

我有一个php脚本:

<?php
if(isset($_GET['p'])) {
    $allowedPages = array();
    $openDir = opendir('./pages/');

    while(false !== ($entry = readdir($openDir))) {
        $allowedPages[] = $entry;
    }

    closedir($openDir);

    preg_replace('~\..*~', '.php', $_GET['p']);

    echo $_GET['p'];
    if(in_array($_GET['p'], $allowedPages)) {
        include './pages/'.$_GET['p'];
    } else {
        echo '404';
    }
}
?>

我想要的是,如果您访问mysite.com/?p=test.html,test.html应该重写为test.php,但它不起作用

它在RegExr上工作:

如何修复

更新:


如何将索引重写为index.php?

回答第二部分:

preg_replace('/([^.]+)(?:\.[^.]+)?$/', "$1.php", $string);