一个常见的xml解析错误解决方法
反正就是莫名其妙的错误,特别是utf-8的页面,出现这种情况的原因大概因为utf-8的编码格式是变长的,规则比较烦,中途少了一个字节或者多了一个字节就容易出现这类问题,后来用ultraedit查看,发现很诡异,都是那种单字节的字符引起的,一些控制码,反正不管怎样,替换掉这些东西就可以了,这些字符本来也不是用来看的。
$xml = preg_replace('#[\x00-\x08\x0e-\x1f\x7f]+#', '', $xml);
反正就是莫名其妙的错误,特别是utf-8的页面,出现这种情况的原因大概因为utf-8的编码格式是变长的,规则比较烦,中途少了一个字节或者多了一个字节就容易出现这类问题,后来用ultraedit查看,发现很诡异,都是那种单字节的字符引起的,一些控制码,反正不管怎样,替换掉这些东西就可以了,这些字符本来也不是用来看的。
$xml = preg_replace('#[\x00-\x08\x0e-\x1f\x7f]+#', '', $xml);
类似
$ps ax | grep -v grep | grep httpd | tr -s ' ' | cut -d ' ' -f1
的方法来取得pid确实还挺好用的,不过今天要取得这个程序执行了多长时间,这个就麻烦了,因为时间中间有空格
翻了半天的man还是没好的解决方案,换了台机器,ubuntu 的,发现 ps 有不小的区别,可以这样:
$ps -eo pid,lstart,args | grep httpd | grep -v grep
2374 Wed Sep 13 00:41:59 2006 /usr/local/httpd/bin/httpd -k restart
2469 Wed Sep 13 00:42:03 2006 /usr/local/httpd/bin/httpd -k restart
22470 Wed Sep 13 00:42:03 2006 /usr/local/httpd/bin/httpd -k restart
22472 Wed Sep 13 00:42:03 2006 /usr/local/httpd/bin/httpd -k restart
22474 Wed Sep 13 00:42:03 2006 /usr/local/httpd/bin/httpd -k restart
其中最前面的数字是pid 中间 Wed Sep 13 00:41:59 2006 是开始时间,后面的所有是"args" (linux下面的ps有lstart这个参数)
这个就麻烦了,args自然只是为了匹配进程特征,中间的时间才是我要的东西。
再找找关于grep的说明(这些小工具都强到一种境界,据说一个sed就写了一本书),一个 -o 参数搞定
$pid=ps -eo pid,lstart,args | grep httpd | grep -v grep | egrep -o ^\ ?[0-9]+\
注意最后有一个空格 "\ " 这样比较保险一点
发现出来的内容
2374
2469
22470
22472
22474
有空格,加一个 tr:
$pid=ps -eo pid,lstart,args | grep httpd | grep -v grep | egrep -o ^\ ?[0-9]+\ | tr -d ' '
同理时间也就简单了:
$ps -eo pid,lstart,args | grep httpd | grep -v grep | egrep -o \ [A-Z][a-zA-Z0-9\ :]+\ [0-9]{4}
转换成时间戳:
$ps -eo pid,lstart,args | grep httpd | grep -v grep | egrep -o \ [A-Z][a-zA-Z0-9\ :]+\ [0-9]{4} | ......
操,卡住了,做的时候都是传的变量。。。
幸好高人(hightman)指点
$ps -eo pid,lstart,args | grep httpd | grep -v grep | egrep -o \ [A-Z][a-zA-Z0-9\ :]+\ [0-9]{4} | xargs -ishit date -d "shit" +%s
1157349945
1158050727
1158144618
1158145964
1158147191
make install 遇到这样的提示
dyld: Symbol not found: _FSPathMakeRef
Referenced from: /usr/local/lib/libfreetype.6.dylib
Expected in: flat namespace
实际上是运行 fc-cache 时出现的问题,实际上就是freetype没有安装好,只要重新安装一次freetype,在 ./configure 加上一句 --with-old-mac-fonts 然后 make clean;make;make install 搞定。
我是看这里找到的解决方法:
http://mail-index.netbsd.org/pkgsrc-bugs/2006/06/28/0019.html