正确格式化这些用户代理

时间:2012-02-18 22:28:04

标签: php user-agent

我有一个包含用户代理数组的缓存文件。

当我打印每个用户代理时,这就是它的样子:

@^Mozilla/5\.0 \(.*Linux i686.*\) AppleWebKit/.* \(KHTML, like Gecko\).*Chrome/6\..*Safari/.*$@ 
@^Mozilla/5\.0 \(X11; U; Linux.*; .*; rv\:1\.9\..*\) Gecko/.* Firefox/.* Maemo Browser 1\.7\..*$@ 
@^Mozilla/5\.0 \(.*Linux i686.*\) AppleWebKit/.* \(KHTML, like Gecko\).*Chrome/7\..*Safari/.*$@ 
@^Mozilla/5\.0 \(.*Linux i686.*\) AppleWebKit/.* \(KHTML, like Gecko\).*Chrome/8\..*Safari/.*$@ 
@^Mozilla/5\.0 \(.*Linux i686.*\) AppleWebKit/.* \(KHTML, like Gecko\) .*Iron/6\..* Safari/.*$@ 
@^Mozilla/5\.0 \(.*Linux i686.*\) AppleWebKit/.* \(KHTML, like Gecko\) .*Iron/7\..* Safari/.*$@ 
@^Mozilla/5\.0 \(.*Linux i686.*\) AppleWebKit/.* \(KHTML, like Gecko\).*Chrome/9\..*Safari/.*$@ 

ect ect....

现在看起来这些用户代理已被转义,因此我stripslashes()了。

我也注意到这里有一些无效字符(@^.*$@),所以我str_replaced()没有任何字符。

最终结果:

Mozilla/5.0 (.Linux i686.) AppleWebKit/. (KHTML, like Gecko).Chrome/6..Safari/ 
Mozilla/5.0 (X11; U; Linux.; .; rv:1.9..) Gecko/. Firefox/. Maemo Browser 1.7. 
Mozilla/5.0 (.Linux i686.) AppleWebKit/. (KHTML, like Gecko).Chrome/7..Safari/ 
Mozilla/5.0 (.Linux i686.) AppleWebKit/. (KHTML, like Gecko).Chrome/8..Safari/ 
Mozilla/5.0 (.Linux i686.) AppleWebKit/. (KHTML, like Gecko) .Iron/6.. Safari/ 
Mozilla/5.0 (.Linux i686.) AppleWebKit/. (KHTML, like Gecko) .Iron/7.. Safari/ 
Mozilla/5.0 (.Linux i686.) AppleWebKit/. (KHTML, like Gecko).Chrome/9..Safari/

我打算将这些用户代理插入到数据库中(已经有数十万个),我担心它们仍然会以某种方式无效,我没有注意到。

如果我将这些插入数据库并且它们无效,那么我将不得不删除整个数据库,并从头开始......

所以我不想冒任何风险......

你们可以发现这些用户代理字符串有什么问题吗?

:)

1 个答案:

答案 0 :(得分:0)

这些是regular expressions,而不是无效字符。如果只是将字符串与用户代理字符串匹配,则它们将不匹配。它们应该作为正则表达式进行匹配。