我想将我的URL转换为两部分,例如我有4个网址,例如
- C/类别1
- C/类别2 页
- /页1 页
- /页2
现在我想要的是将URL转换为两部分,例如
$veriable_name1 = c
$veriable_name2 = category 1
或
$veriable_name1 = c
$veriable_name2 = category 2
或
$veriable_name1 = p
$veriable_name2 = page 1
或
$veriable_name1 = p
$veriable_name2 = page 2
在上面的例子中,C 确定类别,P 确定页面。当我按照教程使用 PHP 将 PHP url 转换为 SEO 友好的 url 时,但他们只给出了一个示例,通过使用单个表中的 PHP/MySQL 转换 url。
我遵循的代码:
<?php
include('db.php');
if ($_GET['url']) {
$url = mysql_real_escape_string($_GET['url']);
$url = $url.'.html'; //Friendly URL
$sql = mysql_query("select title,body from blog where url='$url'");
$count = mysql_num_rows($sql);
$row = mysql_fetch_array($sql);
$title = $row['title'];
$body = $row['body'];
} else {
echo '404 Page.';
} ?>
网页部件
<body>
<?php
if ($count) {
echo "<h1>$title</h1><div class='body'>$body</div>";
} else {
echo "<h1>404 Page.</h1>";
} ?>
</body>
但是我的页面上有多个链接,如果其他最佳建议,我想从多个表中提取
你需要这样的东西:
$url = "c/category1";
$str_pos = strpos($url, "/");
$url_1 = substr($url, 0, $str_pos);
$url_2 = substr($url, $str_pos+1);
echo $url_1."<br/>";
echo $url_2;
结果:
c
category1
所有示例"字符串"都非常相等,因此最简单的方法是:
$url = 'c/category1';
$a = explode('/',$url);
$veriable_name1 = $a[0];
$veriable_name2 = $a[1];
或者,要将其保留为字符串函数,您可以运行
$variable_name1 = strstr($url,'/',true);
$variable_name2 = str_replace('/','',strstr($url,'/'));
您可以使用 explode 来实现:
$str = "c/category1";
list($variable_name1, $variable_name2) = explode('/', $str, 2);
var_dump($variable_name1);
var_dump($variable_name2);
//Output:
//string(1) "c" string(9) "category1"
您可以使用
explode fn 来执行此操作。我尝试过使用 strstr 函数。
参考 strstr fn http://php.net/manual/en/function.strstr.php
$str = 'c/category';
$var2 = trim(strstr($str, '/'),'/');
echo $var2; // prints category
$var1 = strstr($str, '/', true); // As of PHP 5.3.0
echo $var1; // prints c
注意:它适用于[单斜杠oly],如c/类别,不适用于c/类别/smg
您也可以使用正则表达式:
$url = "c/category1";
preg_match('/^(.+)'/(.+)$/', $url, $matches);
// check that the URL is well formatted:
if (count($matches) != 3) {die('problem');}
$veriable_name1 = $matches[1];
$veriable_name2 = $matches[2];
echo('"'.$veriable_name1.'" | "'.$veriable_name2.'"');
// it will show this: "c" | "category1"
在线测试正则表达式 [regex101.com]。