代码之家  ›  专栏  ›  技术社区  ›  medk

使用preg_match和preg_replace

  •  0
  • medk  · 技术社区  · 14 年前

    http://localhost/web/

    http://localhost/web/category/

    有时会变成:

    http://localhost/web/2/ http://localhost/web/3/ 等。。。。

    http://localhost/web/category/2/ , http://localhost/web/category/3/ 等。。。

    我想核实一下:

    http://localhost/web/ 它保持不变。

    http://localhost/web/2/ 它变成 http://localhost/web/

    如果链接是 它保持不变。

    如果链接是 http://localhost/web/category/2/ 它变成 http://localhost/web/category/

    我想应该用 preg_replace() preg_match() .

    我该怎么做?

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Wil Moore III    14 年前

    下面是您需要的正则表达式:

    (http:\/\/localhost\/)(web|web\/category)\/([\d]+)\/
    

    对于preg_replace函数,您需要一个replace语句,它将根据您的条件重新编写字符串:

    '$1$2'
    

    http://localhost/

    下面是示例代码,它将模式与替换合并,以形成完整的preg_replace语句:

    <?php
    
    $pattern = '@(http:\/\/localhost\/)(web|web\/category)\/([\d]+)\/@i';
    
    $subjects = array(
        'http://localhost/web/2/',
        'http://localhost/web/category/2/'
    );
    
    foreach ($subjects as $subject) {
        echo sprintf('Original: %s, Modified: %s', $subject, preg_replace($pattern, '$1$2', $subject)), PHP_EOL;
    }
    

    将上面的代码放入一个文件(例如:replace.php)并通过命令行运行:

    php replace.php