我的表包含一些列,其中一列是document_content
列(日记的内容),文本类型。我想解析内容以获得摘要。我假设摘要是单词abstract
本身和introduction
之间的内容。
这是我的代码:
$id = array('1','2','3','4','5','6','7','8','9');
$sql = mysql_query('SELECT document_id, document_content FROM tbdocument WHERE document_id IN (' . implode(",", $id) . ')') or die(mysql_error());
while ($row = mysql_fetch_array($sql)) {
$files[$row['document_id']] = $row['document_content'];
}
foreach ($files as $doc_id => $file){
if (strpos($file, 'ABSTRACT')){
if (strpos ($file, 'INTRODUCTION')){
$between = substr($file, (strpos($file, 'ABSTRACT')+8), (strpos($file, 'INTRODUCTION')-13) - strpos($file, 'ABSTRACT'));
if (strpos($file, 'Introduction')){
$between = substr($file, (strpos($file, 'ABSTRACT')+8), (strpos($file, 'Introduction')-13) - strpos($file, 'ABSTRACT'));
}
}
else {
if (strpos($file, 'Abstract')){
if (strpos ($file, 'Introduction')){
$between = substr($file, (strpos($file, 'Abstract')+8), (strpos($file, 'Introduction')-13) - strpos($file, 'Abstract'));
}
if (strpos($file, 'INTRODUCTION')){
$between = substr($file, (strpos($file, 'Abstract')+8), (strpos($file, 'INTRODUCTION')-13) - strpos($file, 'Abstract'));
}
}
}
$q = mysql_query("INSERT INTO tb_metadata SET document_id = {$doc_id}, metadata_abstract = '{$between}'") or die(mysql_error());
}
但它给我空白的结果。我的代码出了什么问题?非常感谢你:))
答案 0 :(得分:0)
除了逻辑的一些简化之外,你在foreach
循环中缺少一个括号(它应该是这样的):
foreach ($files as $doc_id => $file){
if (strpos($file, 'ABSTRACT')){
if (strpos ($file, 'INTRODUCTION')){
$between = substr($file, (strpos($file, 'ABSTRACT')+8), (strpos($file, 'INTRODUCTION')-13) - strpos($file, 'ABSTRACT'));
}
if (strpos($file, 'Introduction')){
$between = substr($file, (strpos($file, 'ABSTRACT')+8), (strpos($file, 'Introduction')-13) - strpos($file, 'ABSTRACT'));
}
}
else {
if (strpos($file, 'Abstract')){
if (strpos ($file, 'Introduction')){
$between = substr($file, (strpos($file, 'Abstract')+8), (strpos($file, 'Introduction')-13) - strpos($file, 'Abstract'));
}
if (strpos($file, 'INTRODUCTION')){
$between = substr($file, (strpos($file, 'Abstract')+8), (strpos($file, 'INTRODUCTION')-13) - strpos($file, 'Abstract'));
}
}
}
$q = mysql_query("INSERT INTO tb_metadata SET document_id = {$doc_id}, metadata_abstract = '{$between}'") or die(mysql_error());
}
编辑:另一个问题可能是可能存在从未定义$ between的情况?如果(strpos($file, 'Introduction')-13) - strpos($file, 'Abstract')
返回非正值,该怎么办?然后文本将被截断或根本不返回。