【问题标题】:How do I use a str replace regex for deep replacement?如何使用 str 替换正则表达式进行深度替换?
【发布时间】:2021-06-26 14:30:21
【问题描述】:

我想用字符串替换 URL 的一部分。

假设这是 URL https://playground.com/community/mefan/?page_id=2069 或 https://playground.com/community/mefan/activity-3

我想要做的就是,用activity 替换最后一部分,然后得到这样的 URL:https://playground.com/community/mefan/activity

如果 URL 中已经存在 activity 则不会有任何变化..

【问题讨论】:

    标签: php regex string


    【解决方案1】:

    您要查找的代码是:

    $re = '/(https:\/\/playground\.com\/community\/mefan\/).*/';
    $str = 'https://playground.com/community/mefan/?page_id=2069';
    $subst = '$1activity';
    $result = preg_replace($re, $subst, $str);
    echo $result;
    

    请查看this regex 以获取证据。

    【讨论】:

    • 非常好的方法,但我无法理解这里的模式。你只是接受了那些在刺痛中的话。但是有什么笼统的说法吗??
    • 但我无法理解这里的模式。你只是接受了那些在刺痛中的话。但是有什么笼统的说法吗??
    • 哦,对不起,我以为您可能已经熟悉 Regex101.com,当您单击链接时,完整的解释显示在右侧的 explanation 面板中。
    • 基本上,我们正在寻找字符串https://playground.com/community/mefan/,然后是任何东西(.*)。 $1 部分将接受搜索的字符串并丢弃后面的任何内容并将其替换为 activity
    • 关闭匿名投票(可能来自没有正则表达式定义,但如果是这样的话应该留下评论)。可以更改分隔符以避免转义,并使用重置来避免捕获组。可能的更新,3v4l.org/p7idp
    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    相关资源
    最近更新 更多