0

「段落」列の各単語を追跡するために、増分番号を含めるように多くの SQL ステートメントを変更する必要があります。申し訳ありませんが、私の PHP スキルは限られています。ファイルを読み取った後に foreach ループを考えていますが、実際に行を変更して各単語の値をそれぞれに含めることはできません。

現在の SQL:

INSERT INTO `book` VALUES(1, 1, 1, 'These are the words in a sentence in a chapter in a book.');
INSERT INTO `book` VALUES(1, 1, 2, 'These are the words in the second sentence in a chapter in a book.');
INSERT INTO `book` VALUES(1, 1, 3, 'These are the words in the third sentence in a chapter in a book.');
...and so on.

現在の値は、'book'、'chapter、'paragraph_number'、'paragraph' です。

ゴール:

INSERT INTO `book` VALUES(1, 1, 1, 1,'These');
INSERT INTO `book` VALUES(1, 1, 1, 2,'are');
INSERT INTO `book` VALUES(1, 1, 1, 3,'the');
INSERT INTO `book` VALUES(1, 1, 1, 4,'words');

-new- 値は、'book'、'chapter、'paragraph_number'、'paragraph'、'word_number' です。

私はすでに本、章、段落番号を持っています。

例えば:

INSERT INTO `book` VALUES(1, 5, 16, 'This is a sentence from book 1, chapter 5, paragraph 16.');

次のように変換されます:

INSERT INTO `book` VALUES(1, 5, 16, 1,'This');
INSERT INTO `book` VALUES(1, 5, 16, 2,'is');
INSERT INTO `book` VALUES(1, 5, 16, 3,'a');
INSERT INTO `book` VALUES(1, 5, 16, 4,'sentence');
INSERT INTO `book` VALUES(1, 5, 16, 5,'from');
INSERT INTO `book` VALUES(1, 5, 16, 6,'book');
INSERT INTO `book` VALUES(1, 5, 16, 7,'1,');
INSERT INTO `book` VALUES(1, 5, 16, 8,'chapter');
INSERT INTO `book` VALUES(1, 5, 16, 9,'5,');
INSERT INTO `book` VALUES(1, 5, 16, 10,'paragraph');
INSERT INTO `book` VALUES(1, 5, 16, 11,'16.');

どんな支援も大歓迎です...ありがとう!

編集:以下は、機能したコードです....Akamの回答に基づいています...SQLステートメントを変更しました。[SEP] を追加して、テキストを他のデータから分離し、テキストを操作できるようにしました。また、単語数を増やすために $x を追加しました。

SQL:

1, 1, 1,[SEP]These are the words in sentence 1 in chapter 1 in a book.
1, 1, 2,[SEP]These are the words in sentence 2 in chapter 1 in a book.

PHP:

$lines = file('my-book.sql');
$query = "INSERT INTO `book` VALUES \n";

foreach ($lines as $line)
{
    $part = preg_split("/\[SEP\]/", $line);
    $part[1] = preg_replace('~[\r\n]+~', '', $part[1]);
    $words = preg_split("/\s+/", $part[1]);

    $x = 1;
    foreach($words as $word)
    {
        $values[] = "(".$part[0]." ".$x.", '".$word."')";
        $x++;
    }

}

$new_lines = implode(",\n", $values);
$new_lines = $query.$new_lines.";";
echo $new_lines;
4

1 に答える 1

0
<?php
$text = 'This is a sentence from book 1, chapter 5, paragraph 16.';
$words = preg_split("/\s+/", $text);
$query = "INSERT INTO `book` VALUES \n";
foreach($words as $word){
 $values[] = "(1, 5, 16, 1,'$word')";
}
$finalquery = $query.implode(",\n", $values);
echo $finalquery.";";
?>

出力:

INSERT INTO `book` VALUES 
(1, 5, 16, 1,'This'),
(1, 5, 16, 1,'is'),
(1, 5, 16, 1,'a'),
(1, 5, 16, 1,'sentence'),
(1, 5, 16, 1,'from'),
(1, 5, 16, 1,'book'),
(1, 5, 16, 1,'1,'),
(1, 5, 16, 1,'chapter'),
(1, 5, 16, 1,'5,'),
(1, 5, 16, 1,'paragraph'),
(1, 5, 16, 1,'16.');
于 2013-02-28T22:40:25.287 に答える