dongya1875 2017-02-23 16:21
浏览 39
已采纳

正则表达式错误? - 不是删除?

Finally I found my last error in my code but this time it is very confusing... As you can see in the code, the Output should be (Nothing). But I still get Mitgliedschaft Card (Weltweit).

Why isn't it deleting this phrase? - It should only get deleted if the case \b is active.

$deletewords = ["Mitgliedschaft Card (Weltweit)", "(Xbox 360/Xbox One/weltweit)", "Origins", "Guthaben Code - nur DE", "Guthaben Code für EA ORIGIN", "PC - nur DE"];

$myArra = ["Mitgliedschaft Card (Weltweit)", "Guthaben Code - nur DE", "Guthaben Code für EA ORIGIN", "PC - nur DE"];

foreach ($myArra as $string){
    $string = mb_eregi_replace('\b' . implode('|', $deletewords) . '\b', '', $string);
    echo $string;
}

It is confusing that all other words get deleted but Mitgliedschaft Card (Weltweit) is still there...

  • 写回答

1条回答 默认 最新

  • douvcpx6526 2017-02-23 18:05
    关注

    There're no word boundaries between ) and end of string in Mitgliedschaft Card (Weltweit). A word boundary exists only between a word character and a NON word character.

    Moreover, parenthesis are special character in a regex, you have to escape them, here is a way to go using preg_quote:

    $deletewords = ["Mitgliedschaft Card (Weltweit)", "(Xbox 360/Xbox One/weltweit)", "Origins", "Guthaben Code - nur DE", "Guthaben Code für EA ORIGIN", "PC - nur DE"];
    
    $myArra = ["Mitgliedschaft Card (Weltweit)", "Guthaben Code - nur DE", "Guthaben Code für EA ORIGIN", "PC - nur DE"];
    
    function quote($x) { return preg_quote($x);}
    $deletewords = array_map('quote', $deletewords);
    $allwords =  implode('|', $deletewords)
    foreach ($myArra as $string) {
        $string = mb_eregi_replace('(?:' . $allwords . ')', '', $string);
        echo $string,"
    ";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行