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,"
    ";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?