使用INSERT_WITH_MARKS删除添加到htAccess的代码

时间:2017-10-06 作者:Michae Pavlos Michael

我在几个插件中使用insert\\u with\\u标记,向htaccess文件添加一些小代码。我不清楚的是如何删除代码和标记。

例如,如果我这样调用函数:-

insert_with_markers($htaccess, "marker","RewriteBase /foobar");
htaccess中的结果是:-

# BEGIN marker
RewriteBase /foobar
# END marker
我可以将insert\\u与\\u标记一起使用,使用空字符串,如下所示:-

insert_with_markers($htaccess, "marker","");
这将删除所有代码,但标记仍保留,如下所示:-

# BEGIN marker

# END marker
有人知道一种干净的方法来移除标记吗?。。。这不涉及用regex过滤htaccess文件吗?我想能够卸载我的插件,并删除所有的痕迹,如果可能的话。

2 个回复
最合适的回答,由SO网友:Rick Hellewell 整理而成

如果您知道插入的确切代码,请阅读htaccess 包含以下内容的函数的文件fread 命令,并搜索插入的文本,将找到的文本替换为空字符串。然后fwrite 将文本添加到htaccess 文件

如果您只是想找到一种方法来删除# BEGIN MARKER / # END MARKER 文本,然后使用相同的过程。

SO网友:majick

我不确定是否有一个标准的方法或功能来做到这一点,但像这样的东西我认为将是一个很好的起点。。。

function remove_marker($contents, $marker) {
    $posa = strpos($contents, \'# BEGIN \'.$marker);
    $posb = strpos($contents, \'# END \'.$marker) + strlen(\'# END \'.$marker);
    $newcontent = substr($contents, 0, $posa);
    $newcontent .= substr($contents, $posb, strlen($contents));
    return $newcontent;
}

$marker = \'marker\';

// rewrite file using WP Filesystem
ob_start(); 
$creds = request_filesystem_credentials(\'\', false, false, dirname($htaccess), null, true);
ob_end_clean();
if ($creds) {
    $filesystem = WP_Filesystem($creds, dirname($htaccess), true);}
    if ($filesystem) {
        global $wp_filesystem;
        $contents = $wp_filesystem->get_contents($htaccess);
        $newcontents = remove_marker($contents, $marker);
        $writeresult = $wp_filesystem->put_contents($htaccess, $newcontents, FS_CHMOD_FILE);
    }
}

结束

相关推荐

如何使用.htaccess文件在WordPress中更改带有漂亮URL的查询字符串

我想在WordPress中创建一个SEO友好的URL,我正在WordPress中开发一个网站,它有几个带有自定义PHP脚本的自定义页面。我正在以id=“some text”格式发送数据,并在获取[\'id\']参数时从数据库中匹配此文本。我已经从仪表板中选择了我的设置。Post name http://domain.com/sample-post/ 我当前拥有此URL域。com/父页/子页/?id=“一些文本”现在我想要这个域名。com/父页/子页/某些文本我已修改我的。htaccess文