1

我是 php 新手。我有一个文本文件,其中包含类似这样的文本

<??blah blahh blah
   blah blah blah
   .......
??>

<??blah blahh blah
   blah blah blah
   .......
??>

<??blah blahh blah
   blah blah blah
   ...... .
??>

这意味着我的主要数据介于两者之间<?? and ??>我想创建一个包含数组中所有主要数据的数组(删除这些<?? & ??>字符)。这样我就可以在 MySql 表中插入数据项。我不知道如何从文件 lile 这个创建一个数组。

感谢帮助!!!

4

4 回答 4

4

希望这会有所帮助。

首先,您需要查看与 PHP 关联的文件库。

参考http ://www.php.net/manual/en/ref.filesystem.php

使用 fopen 和 fread,您可以打开有问题的文件并从那里解析它。

<?php
// get contents of a file into a string
$filename = "something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

接下来,我们将使用一些简单的字符串操作来获取您的重要信息。使用split,我们可以将您的文件内容切割成好东西。

参考: http: //php.net/manual/en/function.split.php

<?php
// sanitize content headers
$contents = split("<\?\?", $contents);
foreach($contents as $content) {
   // remove content footers
   str_replace("??>", "", $content);
}
?>

最后,我们将遍历刚刚使用 split 创建的数组中的所有元素,并将它们插入到我们的数据库中。

参考: http: //php.net/manual/en/book.mysql.php

<?php
// sanitize content headers
$contents = split("<\?\?", $contents);
foreach($contents as $content) {
   if (empty($content)) {
       continue;
   }
   // remove content footers
   str_replace("??>", "", $content);

   // insert into database
   mysql_query("INSERT INTO `something` VALUES ('" . $content . "')");
}
?>

总体而言,最终代码应如下所示:

<?php
// get contents of a file into a string
$filename = "something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);

// sanitize content headers
$contents = split("<\?\?", $contents);
foreach($contents as $content) {
   if (empty($content)) {
       continue;
   }
   // remove content footers
   str_replace("??>", "", $content);

   // insert into database
   mysql_query("INSERT INTO `something` VALUES ('" . $content . "')");
}
?>

祝你好运!

于 2012-07-06T17:37:22.460 回答
3

您应该能够通过爆炸和一点点创造力来做到这一点,如下所示:

$str = file_get_contents( 'yourfile.txt');
$array = explode( '<??', $str);
array_shift( $array); // first element is empty
array_walk( $array, function( &$el) { $el = str_replace( '??>', '', $el); });
var_dump( $array);

现在,您的数组看起来像:

array(3) {
  [0]=>
  string(52) "blah blahh blah
   blah blah blah
   .......


"
  [1]=>
  string(52) "blah blahh blah
   blah blah blah
   .......


"
  [2]=>
  string(49) "blah blahh blah
   blah blah blah
   ...... .
"
}
于 2012-07-06T17:40:58.310 回答
2
<?php    
preg_match_all("/(?:<\?\?)(.+?)(?:\?\?>)/sm",file_get_contents("test.txt"),$result);
print_r($result[1]);
?>
于 2012-07-06T18:02:29.493 回答
1

尝试:

<?php

$filestring = file_get_contents('YOUR_FILE_TO_PARSE');
$pattern = '/<\?\?[\w\s.]*\?\?>/';
preg_match($pattern, $filestring, $matches);

?>

$matches 将是您的数组

于 2012-07-06T17:51:16.107 回答