Dzień dobry,
jestem nowym użytkownikiem forum, a sprowadza mnie tu potrzeba związana z liczeniem znaków.
Potrzebuję skryptu zliczającego ilość znaków ze spacją, bez spacji oraz ilość akapitów w pliku. Dotychczas udało mi się utworzyć poniższy kod:
Wczytywanie pliku:
<form method="post" action="" enctype="multipart/form-data">
<input type="file" name="docfile" />
<input type="submit" name="submit" />
</form>
<?php
if(isset($_POST['submit'])){ $file = $_FILES['docfile']['name'];
//$file = file_get_contents($file);
$ext = pathinfo($file, PATHINFO_EXTENSION
);
if($ext == "txt" || $ext == "pdf" || $ext == "doc" || $ext == "docx" || $ext == "odt"){
}
}
?>
Następnie posiadając wgrany plik, podaję go na zliczanie:
<?php
/*Name of the document file*/
$document = 'zliczanie.docx';
/**Function to extract text*/
function extracttext($filename) {
//Check for extension
$splited = explode('.', $filename);
//if its docx file
if($ext == 'docx')
$dataFile = "word/document.xml";
//else it must be odt file
else
$dataFile = "content.xml";
//Create a new ZIP archive object
$zip = new ZipArchive;
// Open the archive file
if (true === $zip->open($filename)) {
// If successful, search for the data file in the archive
if (($index = $zip->locateName($dataFile)) !== false) {
// Index found! Now read it to a string
$text = $zip->getFromIndex($index);
// Load XML from a string
// Ignore errors and warnings
$xml = DOMDocument::loadXML($text, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
// Remove XML formatting tags and return the text
}
//Close the archive file
$zip->close();
}
// In case of failure return a message
return null;
}
echo mb_strlen
(trim(extracttext
($document))); echo mb_strlen
(extracttext
($document)); ?>
Wynik jaki uzyskuje to 1155 znaków przy użyciu funkcji trim, 1157 bez funkcji trim.
Powinienem uzyskać 1010 samych znaków bez spacji oraz 1133 ze spacjami.
Dopiero niedawno rozpocząłem swoją przygodę z programowaniem, więc proszę nie zbrukać mnie z poziomem chodnika.
Dziękuję za wszelkie opinie i pomoc.