Nieuw lid |
|
Omdat je de tekst in een SQL-database plaatst neem ik aan dat je de tekst gewoon wilt doorzoeken en dat een \n niet belangrijk is. Deze code werkt:
<?php
function Doc_tekst($bestand){
/* Eerst gaan we zorgen dat we alleen maar letters,
cijfers, leestekens ed in onze string hebben,
dan knippen we in de string.*/
$doc = file_get_contents($bestand); // Direct met file() werken gaat niet goed: dan staat niet in elke key 1 teken.
$array = array();
for($i=0;$i<strlen($doc)-1;$i++){
$char = substr($doc, $i, 1); // Substr geeft wel altijd maar 1 teken.
array_push($array, ord($char)); // We plaatsen de ASCII-waarden in een array.
}
foreach($array as $ascii){
if($ascii>31 and $ascii<126 or $ascii==128) // De meestvoorkomende tekens en het euroteken. Kun je aanpassen en wat meer tekens bijzetten zoals promille, yen enz.
$string.= chr($ascii); // We zetten een letter in de string.
}
$string = strrev($string); // Zo kunnen we naar het laatste voorkomen van 'CJ*' kijken, wat altijd in een .doc-bestand staat. (strrchr kunnen we hier net gebruiken omdat we naar 3 tekens zoeken.)
$string = substr($string, strpos($string, "JC*")-3, -15); // Hier zoeken we 'JC*' omdat we met de omgekeerde string werken. We doen een paar bytes die tussen 31 en 126 liggen vooraan weg. Er zijn nog wel wat over, maar beter te weinig wegdoen dan te veel.
$string = strrev($string); // De string staat weer juist.
$string = substr($string, 0, -40); // De laatste bytes wegdoen. Er staan nog wel wat tekens, maar beter te weinig wegdoen dan te veel.
return $string;
}
echo Doc_tekst('test.doc');
?>
<?php function Doc_tekst($bestand){ /* Eerst gaan we zorgen dat we alleen maar letters, cijfers, leestekens ed in onze string hebben, dan knippen we in de string.*/ $doc = file_get_contents($bestand); // Direct met file() werken gaat niet goed: dan staat niet in elke key 1 teken. for($i=0;$i<strlen($doc)-1;$i++){ $char = substr($doc, $i, 1); // Substr geeft wel altijd maar 1 teken. array_push($array, ord($char)); // We plaatsen de ASCII-waarden in een array. } foreach($array as $ascii){ if($ascii>31 and $ascii<126 or $ascii==128) // De meestvoorkomende tekens en het euroteken. Kun je aanpassen en wat meer tekens bijzetten zoals promille, yen enz. $string.= chr($ascii); // We zetten een letter in de string. } $string = strrev($string); // Zo kunnen we naar het laatste voorkomen van 'CJ*' kijken, wat altijd in een .doc-bestand staat. (strrchr kunnen we hier net gebruiken omdat we naar 3 tekens zoeken.) $string = substr($string, strpos($string, "JC*")-3, -15); // Hier zoeken we 'JC*' omdat we met de omgekeerde string werken. We doen een paar bytes die tussen 31 en 126 liggen vooraan weg. Er zijn nog wel wat over, maar beter te weinig wegdoen dan te veel. $string = strrev($string); // De string staat weer juist. $string = substr($string, 0, -40); // De laatste bytes wegdoen. Er staan nog wel wat tekens, maar beter te weinig wegdoen dan te veel. return $string; } echo Doc_tekst ('test.doc'); ?>
Dit geeft dan bijvoorbeeld hetvolgende:
Citaat: 1b"Z0TestdocumentHiertussen zou een n moeten staan maar Word heeft een ander regeleinde. Punten gaan wel, en het euroteken ook.34STek13€CJOJQJ^JmHs H5C
Zoals je ziet, voor en na de tekst staat nog iets, maar als je gewoon wil doorzoeken werkt het. Je zou ook kunnen zeggen dat aan het begin en aan het einde van het document twee bepaalde woorden staan, en dan kun je die zoeken. Dan heb je alleen de tekst. |