PHP用另一个字符串屏蔽字符串

时间:2018-10-02 03:56:43

标签: php url masking

有没有办法用一个变量中的另一个字符串来屏蔽URL中的字符串? 我有这些变量

PathCompiler

我想在浏览器中显示的是:$keyword = 'stackoverflow'; $foo = $keyword; $bar = 'main-category'; 但此网址将请求以下内容:http://example.com/main-category/page=2

请不要告诉我htaccess可以实现,因为关键字是动态变化的,而且在客户端也是如此,并非所有用户都可以修改htaccess / nginx.conf

edit:上面的URL仅作为示例,我的意思是 如何使用$ bar变量调用$ keyword变量

我尝试

http://example.com/$keyword/page=2

这的确呼应了'main-category',但没有传递真正的$ foo变量

谢谢。

2 个答案:

答案 0 :(得分:0)

我为您提供解决方案,但是基于htaccsess的方式。

您将在get参数上使用关键字。

执行以下步骤:

1)将此RewriteRule添加到.htaccsess文件

RewriteRule test /(.*)/ page = 2?$ test2.php?keyword = $ 1 [L]

2)在主文件夹中创建test2.php(您可以随意命名文件,通常开发人员使用index.php来处理所有此类请求)

并将这些代码放入页面

$keyword = htmlscpecialchars($_GET['keyword']);

echo "The keyword is "$keyword;

因此,您将获得关键字。不要忘记您的网址将是http://example.com/test/ {keyword} / page = 2。您可以善意地更改或删除“测试”部分。

最诚挚的问候。

答案 1 :(得分:0)

在什么情况下要应用另一个变量仍然完全不清楚。还是为什么。

无论如何,在任何人提到varvars之前,您可能需要的是一张简单的地图:

$map = array(
     "main-category" => "stackoverflow",
     '$keyword' => "bazbazbaz",
);
$bar = "main-category";
$foo = $map[$bar];

允许在应用程序上下文中“重写”关键字或变量样式的占位符。