【问题标题】:Concatenate regex连接正则表达式
【发布时间】:2016-09-03 03:35:02
【问题描述】:

我试图将这一切都集中到一个查询中,但我的正则表达式技能并不那么出色。我确实让它以这种不优雅的方式工作。非常感谢任何帮助。

源 $url 如下所示:

/o/33484/bob-nonami

我需要的最终结果是这样的:

bob-nonami

这样可以提高效率

$urlName1 = preg_replace("/[0-9]/","",$url);
$urlName2 = preg_replace("/(o)/","",$urlName1);
$urlName = preg_replace("/(\/)/","",$urlName2);

【问题讨论】:

    标签: php regex preg-replace pcre


    【解决方案1】:

    只需在 character class 中包含其他字符即可替换。

    $url = "/o/33484/bob-nomai";
    echo preg_replace("~^/o[0-9/]+~", "", $url); // bob-nomai
    

    你不可能使用preg_replace("/(o)/", "", $urlName1),因为那样只会得到字符串"bb-nmai",这显然不是你想要的。

    相反,您似乎想在字符串的乞求处删除前导"/o",这可以在PCRE with an anchor中实现。

    在字符类之外,在默认匹配模式下,抑扬符(^)是一个断言,只有当当前匹配点位于主题字符串的开头时才为真。

    所以^/o 将匹配主题开头的/o[0-9/] 的任何后续字符。

    【讨论】:

    • /(o)/ 不是我想要的。你说的对!你的例子正是需要的。非常感谢!! :)
    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多