一个文本文件内有如下内容:<KK>
<TITLE>这是一个标题</TITLE>
<BODY>这是内容啊</BODY>
<OTHER>这是其他东东</OTHER>
</KK><KK>
<TITLE>这是一个标题2</TITLE>
<BODY>这是内容啊2</BODY>
<OTHER>这是其他东东2</OTHER>
</KK><KK>
<TITLE>这是一个标题3</TITLE>
<BODY>这是内容啊3</BODY>
<OTHER>这是其他东东3</OTHER>
</KK>我现在要做的是将第一段KK之间的内容(title,body,other的内容分别插入到数据库相关字段)插入到数据库,然后再将第二段的KK之间的内容插入到数据库,循环下去,好几千个吧。用正则可以读到一个数组里面吧?如何写?数组大了是否会影响速度?是否还有其他高效的方法呢?
<TITLE>这是一个标题</TITLE>
<BODY>这是内容啊</BODY>
<OTHER>这是其他东东</OTHER>
</KK><KK>
<TITLE>这是一个标题2</TITLE>
<BODY>这是内容啊2</BODY>
<OTHER>这是其他东东2</OTHER>
</KK><KK>
<TITLE>这是一个标题3</TITLE>
<BODY>这是内容啊3</BODY>
<OTHER>这是其他东东3</OTHER>
</KK>我现在要做的是将第一段KK之间的内容(title,body,other的内容分别插入到数据库相关字段)插入到数据库,然后再将第二段的KK之间的内容插入到数据库,循环下去,好几千个吧。用正则可以读到一个数组里面吧?如何写?数组大了是否会影响速度?是否还有其他高效的方法呢?
fopen fgets
然后就是字符串操作了.
..
当我没说,我以为是 xml 文件
php已经提供了强大的xml处理函数,为什么不用呢?$xml = <<< XML
<KK>
<TITLE>这是一个标题</TITLE>
<BODY>这是内容啊</BODY>
<OTHER>这是其他东东</OTHER>
</KK><KK>
<TITLE>这是一个标题2</TITLE>
<BODY>这是内容啊2</BODY>
<OTHER>这是其他东东2</OTHER>
</KK><KK>
<TITLE>这是一个标题3</TITLE>
<BODY>这是内容啊3</BODY>
<OTHER>这是其他东东3</OTHER>
</KK>
XML;
$p = simplexml_load_string(iconv('gbk','utf-8','<root>'.$xml.'</root>'));
print_r($p);SimpleXMLElement Object
(
[KK] => Array
(
[0] => SimpleXMLElement Object
(
[TITLE] => 这是一个标题
[BODY] => 这是内容啊
[OTHER] => 这是其他东东
) [1] => SimpleXMLElement Object
(
[TITLE] => 这是一个标题2
[BODY] => 这是内容啊2
[OTHER] => 这是其他东东2
) [2] => SimpleXMLElement Object
(
[TITLE] => 这是一个标题3
[BODY] => 这是内容啊3
[OTHER] => 这是其他东东3
) ))
$xml = <<< XML
<KK>
<TITLE>这是一个标题</TITLE>
<BODY>这是内容啊</BODY>
<OTHER>这是其他东东</OTHER>
</KK><KK>
<TITLE>这是一个标题2</TITLE>
<BODY>这是内容啊2</BODY>
<OTHER>这是其他东东2</OTHER>
</KK><KK>
<TITLE>这是一个标题3</TITLE>
<BODY>这是内容啊3</BODY>
<OTHER>这是其他东东3</OTHER>
</KK>
XML;function foo($v) {
print_r($v);
}
preg_replace_callback("#<TITLE>(.+)</TITLE>\s*<BODY>(.+)</BODY>\s*<OTHER>(.+)</OTHER>#", 'foo', $xml);
Array
(
[0] => <TITLE>这是一个标题</TITLE>
<BODY>这是内容啊</BODY>
<OTHER>这是其他东东</OTHER>
[1] => 这是一个标题
[2] => 这是内容啊
[3] => 这是其他东东
)
Array
(
[0] => <TITLE>这是一个标题2</TITLE>
<BODY>这是内容啊2</BODY>
<OTHER>这是其他东东2</OTHER>
[1] => 这是一个标题2
[2] => 这是内容啊2
[3] => 这是其他东东2
)
Array
(
[0] => <TITLE>这是一个标题3</TITLE>
<BODY>这是内容啊3</BODY>
<OTHER>这是其他东东3</OTHER>
[1] => 这是一个标题3
[2] => 这是内容啊3
[3] => 这是其他东东3
)于是,你可以在回调函数里完成入库操作
function foo($v) {
$sql = "insert into tbl_name (title, body, other) values ('$v[1]', '$v[2]', '$v[3]')";
mysql_query($sql);
}
foreach($rs['name'] as $k=>$v){
if($v[0]=="KK") echo "--------------------------------<br>";
else echo $v[0]."=".$rs['content'][$k][0]."<br>";
}
楼上真高手啊
只能说 csdn 歧视 php !而且连可用分都被清空了若不是对 php 有所偏好,早就不来这里了