Don't preg_match_all when processing items. fixes #4239 for 2.3

git-svn-id: http://svn.automattic.com/wordpress/trunk@5423 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2007-05-10 00:05:21 +00:00
parent 6f6062af97
commit 17be568a6d
1 changed files with 29 additions and 8 deletions

View File

@ -84,19 +84,40 @@ class WP_Import {
function get_entries() { function get_entries() {
set_magic_quotes_runtime(0); set_magic_quotes_runtime(0);
$importdata = file($this->file); // Read the file into an array $importdata = array_map('rtrim', file($this->file)); // Read the file into an array
$importdata = implode('', $importdata); // squish it
$importdata = preg_replace("/(\r\n|\n|\r)/", "\n", $importdata); $this->posts = array();
preg_match_all('|<item>(.*?)</item>|is', $importdata, $this->posts); $this->categories = array();
$this->posts = $this->posts[1]; $num = 0;
$doing_entry = false;
foreach ($importdata as $importline) {
if ( false !== strpos($importline, '<wp:category>') ) {
preg_match('|<wp:category>(.*?)</wp:category>|is', $importline, $category);
$this->categories[] = $category[1];
continue;
}
if ( false !== strpos($importline, '<item>') ) {
$this->posts[$num] = '';
$doing_entry = true;
continue;
}
if ( false !== strpos($importline, '</item>') ) {
$num++;
$doing_entry = false;
continue;
}
if ( $doing_entry ) {
$this->posts[$num] .= $importline . "\n";
}
}
foreach ($this->posts as $post) { foreach ($this->posts as $post) {
$post_ID = (int) $this->get_tag( $post, 'wp:post_id' ); $post_ID = (int) $this->get_tag( $post, 'wp:post_id' );
if ($post_ID) if ($post_ID) {
$this->posts_processed[$post_ID][0] = &$post; $this->posts_processed[$post_ID][0] = &$post;
$this->posts_processed[$post_ID][1] = 0; $this->posts_processed[$post_ID][1] = 0;
}
} }
preg_match_all('|<wp:category>(.*?)</wp:category>|is', $importdata, $this->categories);
$this->categories = $this->categories[1];
} }
function get_wp_authors() { function get_wp_authors() {