替换用户代理中的所有“.net clr”

时间:2014-03-10 13:09:11

标签: php regex

我正在学习正则表达式,我正在测试用户代理上的一些字符串查找/替换。

我的用户代理很少:

  • .NET CLR 11432
  • .NET CLR 2.0.2648
  • .NET CLR 1.0.1369
  • .NET CLR 2.0.90283

我可以替换“.net clr \ d”,但它无法正常工作。

  $ua = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 4.1; .NET CLR 12858)';

  $r = preg_replace('/.NET CLR \d/i', '', $ua);

  var_dump($r);

我得到:

Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 4.1; 2858; .0.6143)

显然我错过了什么,但是什么?

感谢

2 个答案:

答案 0 :(得分:1)

使用\d+也可以转义点(.):

$r = preg_replace('/\.NET CLR \d+/i', '', $ua);

如果你想删除数字(0-9)+点(.),那么

$r = preg_replace('/\.NET CLR [\d.]+/i', '', $ua);

答案 1 :(得分:1)

你的正则表达式不遵守版本号的小数点,这就是为什么它匹配到.之前的所有内容。改变你的正则表达式:

$r = preg_replace('/\.NET CLR [\d\.]+/i', '', $ua);