일부 열로 구성된 표가 있는데, 그 중 하나는 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());
}
그러나 그것은 나에게 빈 결과를 제공합니다. 내 코드에 무슨 문제가 있습니까? 논리의 일부 단순화 외에도 아주 많이 :)
먼저 'strpos' 대신'stripos' (대소 문자 구별)를 사용하여 로직을 상당히 단순화 할 수 있습니다 : http://us2.php.net/stripos –
다음으로 정규 표현식을 고려해 볼 수 있습니다. SQL 또는 PHP 중 하나 여야합니다. –
오, 감사합니다! 'stripos'를 사용하려고합니다. –