3

我有一些句子。我必须选择包含超过 6 个单词的句子。然后它们将被插入到数据库中。

<?php
    require_once 'conf/conf.php';
    $text = " Poetry. Do you read poetry while flying? Many people find it relaxing to read on long flights. Poetry can be divided into several genres, or categories. ";
    $sentences = explode(".", $text);
    foreach ($sentences as $sentence) {
       if (count(preg_split('/\s+/', $sentence)) > 6) {
           $save = $sentence. ".";
           $sql = mysql_query("INSERT INTO tb_name VALUES('','$save')");
       }
    }
?>

结果只有插入数据库的第二句话 => '你在飞行时读诗吗?许多人发现在长途飞行中阅读很放松。” 而第三句也应插入。请帮助我,谢谢:)

4

2 回答 2

3

这是您正在寻找的解决方案。您不能添加多行,因为您的 ID 值未指定,并且它是表中的键。由于要将句子添加到同一行,因此需要执行一个查询。

$text = " Poetry. Do you read poetry while flying? Many people find it relaxing to read on long flights. Poetry can be divided into several genres, or categories. ";
$sentences = explode(".", $text); $save = array();
foreach ($sentences as $sentence) {
   if (count(preg_split('/\s+/', $sentence)) > 6) {
       $save[] = $sentence. ".";
   }
}
if( count( $save) > 0) {
    $sql = mysql_query("INSERT INTO tb_name VALUES('','" . implode( ' ', $save) . "')");
}

现在,这两个句子将被插入到数据库中的同一行中,用空格分隔。如果将第一个参数修改为 ,则可以更改它们的分隔符implode()

生成的查询是这样的:

INSERT INTO tb_name VALUES('',' Do you read poetry while flying? Many people find it relaxing to read on long flights. Poetry can be divided into several genres, or categories.')
于 2012-06-28T18:52:02.343 回答
1

代替:

$sentences = explode(".", $text);

有了这个:

$newSentences = array();
$sentences = preg_split("/(\.|\?|\!)/", $text, -1, PREG_SPLIT_DELIM_CAPTURE);

$odd = false;
foreach($sentences as $sentence) {
    $sentence = trim($sentence);
    if($sentence != '') {
        if(!$odd) {
            $newSentences[] = $sentence;
        } else {
            $newSentences[count($newSentences) - 1] .= $sentence;
        }
        $odd = !$odd;
    }
}

.它分隔以or ?or结尾的句子!。foreach 只是重新组合句子。

此处示例:http: //codepad.org/kk3PsVGP

于 2012-06-28T18:52:31.077 回答