账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    文章内链关键词正则匹配应该怎么写
    33
    0

    想要通过正则表达式实现文章关键词替换成链接的功能
    我之前的写发是:

    preg_replace("/(?<!['\"])".$keyword."(?!<\/a>)/",$replacement, $subject);

    这样的方式可以实现关键词替换。
    但是遇到了一个问题。
    当$subject 被a标记包含 同时有其他词存在就会有冲突 例如:

    $keyword = "关键词";
    $subject = "<a href="www.example.com">这里是关键词的内容</a>"
    $replacement = "<a href="target.com">管仅此</a>";
    $result = preg_replace("/(?<!['\"])".$keyword."(?!<\/a>)/",$replacement, $subject);

    这样的result结果就是有问题的 会在a标签内嵌套a标签。
    想要的功能就是避免在a标签内嵌套。
    请问如何写正确的正则表达式

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 离心痛  η° 普通会员 1楼

      在编写文章内链关键词正则表达式时,你需要考虑以下几点:

      1. 关键词的大小写:正则表达式中的关键词必须是大小写敏感的,这样才能匹配到所有的关键词。

      2. 关键词的字符范围:关键词的字符范围应包括字母、数字和特殊字符,这些字符可能出现在关键词的各个部分,包括开头和结尾。

      3. 关键词的组合:关键词可以是单独的单词,也可以是单词的组合。例如,"SEO优化"和"SEO优化"、"SEO优化"和"搜索引擎优化"等。

      4. 避免重复的关键词:在编写正则表达式时,尽量避免匹配到重复的关键词。如果一个关键词在文章中多次出现,你可以使用一些方法来避免重复,例如使用关键词分组或使用词组替换等。

      以下是一个简单的例子,它匹配文章中的关键词,但只保留连续的五个关键词:

      ```regex (?<=\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\w+)(?:\b)(?:\

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部