PHP数组无法识别变量值

时间:2012-09-05 00:51:27

标签: php

请阅读下面的代码和评论,看看我正在尝试做什么。很难在一个段落中解释。

$url_fixx = 'home/sublink/group-view/product/catview1'; 
// What my variable holds. MY GOAL IS: I want to omit group-view, product and catview1 from this so I use the trick below. 

catview在最后有一个随机数,所以我使用下面的代码找到最后的数字,在这种情况下输出“catview1”

$string = $url_fixx;
$matches = array();
if (preg_match('#(catview\d+)$#', $string, $matches)) {
    $catViewCatch = ($matches[1]);
 }
// I got this from http://stackoverflow.com/a/1450969/1567428

$url_fixx = str_replace( array( 'group-view/', 'product', 'catview1' ), '', $url_fixx );
// this outputs what I want. 

我的问题是:

//When I replace "catview1" with $catViewCatch, the whole str_replace doesnt work. 
$url_fixx = str_replace( array( 'group-view/', 'product', $catViewCatch), '', $url_fixx );

为什么?我做错了什么?

PS:我的网址有时也会改为这样。
    $ url_fixx ='home / sublink / group-view / anotuer-sublink / 123-article'

我如何处理所有这些?

1 个答案:

答案 0 :(得分:3)

两个示例都输出完全相同的内容。以下代码演示了这一点:

<?php
$url_fixx = 'home/sublink/group-view/product/catview1';

$string = $url_fixx;
$matches = array();
if (preg_match('#(catview\d+)$#', $string, $matches)) {
    $catViewCatch = ($matches[1]);
}
echo str_replace( array( 'group-view/', 'product', 'catview1' ), '', $url_fixx );
echo '<br />';
echo str_replace( array( 'group-view/', 'product', $catViewCatch), '', $url_fixx );
?>

此外,您可以考虑使用preg_replace,因为它将使用更少的代码完成任务:

echo preg_replace('#group-view/product/catview[0-9]+#','',$url_fixx);