[PHP] docx, xlsx, pptx 텍스트 가져오기
어제 보도는[AWS 인정] 솔루션 기술 - 영어 시험(SAA-C02)입니다.
개시하다
안녕하세요.나는 이번 달부터 고베로 이주하기 시작했다.
나는 세계에서 연쇄를 만드는 시동 스튜디오 GAOGO를 소프트웨어 엔지니어로 만들었다.
이 글에는 사무실 시스템의 파일(Word, Excel, PowerPoint)에서 텍스트를 추출한 샘플 코드가 기술되어 있다.
ZipArchive사용류.
다음 프로그램 라이브러리도 있지만 텍스트만 가져오는 데 사용할 좋은 실제 예시를 찾을 수 없습니다. (무시했을 수도 있습니다.)
Office Open XML(OOXML)
XML의 파일 형식에 따릅니다.
마이크로소프트 워드, Excel, Powerpoint는 모두 이 파일을 모방한 것이다.
파일에 있는 문자는 XML 내부에 존재합니다.
OXML의 실제 상태는 ZIP 아카이브이며 동결해제 후 컨텐트를 확장할 수 있습니다.
OOXML 내용
Word(.docx)
Excel(.xlsx)
PowerPoint(.pptx)
설치 예
운영 환경
Word(docx)의 경우
word/document.xml
에서 텍스트 가져오기<?php
function getTextFromDocx(string $filePath): string
{
$zip = new ZipArchive;
$result = '';
if ($zip->open($filePath) === true) {
$documentXml = $zip->getFromName("word/document.xml");
if ($documentXml) {
$domDocument = new DOMDocument();
$domDocument->loadXML($documentXml);
$paragraphs = $domDocument->getElementsByTagName("p");
/** @var DOMNode $paragraph */
foreach ($paragraphs as $paragraph) {
$result .= $paragraph->textContent;
}
}
}
return $result . "\n";
}
echo getTextFromDocx('./test.docx');
결실
Excel(xslx) 시
xl/sharedStrings.xml
에서 텍스트 가져오기<?php
function getTextFromXlsx(string $filePath): string
{
$zip = new ZipArchive;
$response = '';
$open = $zip->open($filePath);
if ($open === true) {
$sharedStringsXml = $zip->locateName('xl/sharedStrings.xml');
if ($sharedStringsXml) {
$domDocument = new DOMDocument;
$xml = $zip->getFromIndex($sharedStringsXml);
$domDocument->loadXML($xml, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
$response .= strip_tags($domDocument->saveXML());
}
$zip->close();
}
return $response;
}
echo getTextFromXlsx('./test.xlsx');
결실
PowerPoint(pptx) 시
getTextFromPptx.php
<?php
function getTextFromPptx(string $filePath): string
{
$zip = new ZipArchive;
$response = '';
$open = $zip->open($filePath);
if ($open === true) {
$slideNumber = 1;
$doc = new DOMDocument;
while (($xmlIndex = $zip->locateName('ppt/slides/slide' . $slideNumber . '.xml')) !== false) {
$xmlData = $zip->getFromIndex($xmlIndex);
$doc->loadXML($xmlData, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
$response .= strip_tags($doc->saveXML());
$slideNumber++;
}
$zip->close();
}
return $response;
}
echo getTextFromPptx('./test.pptx');
결실
최후
이번 샘플 코드는 우리 창고에서 접근할 수 있습니다.
테스트용 파일도 함께 첨부되어 있기 때문에 명령줄에서 실제로 실행할 수 있다.
참고 문장
Reference
이 문제에 관하여([PHP] docx, xlsx, pptx 텍스트 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/yutaroshimamura/articles/3dd71d6b0257a0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)