login  Naam:   Wachtwoord: 
Registreer je!
 Forum

.doc bestand openen

Offline lasdesigner - 21/10/2006 12:39
Avatar van lasdesignerPHP beginner Hey!
Ik wil graag iets hebben in de trend van:

Ik heb een formuliertje met een bijlage-'ding'. Als ik daar nu een .doc bestand invul en op verzenden klik wil ik graag dat de inhoud (alleen de TEKST) in de mySQL database komt. Maar hoe doe ik dit? Kan dit gewoon met fopen fread? of?

Groet,

4 antwoorden

Gesponsorde links
Offline Ultimatum - 21/10/2006 12:40
Avatar van Ultimatum PHP expert Dus je wilt de .doc uitlezen?

Als je een .doc zou kunnen uitlezen zou het met fopen moeten ja
Offline beckers - 21/10/2006 13:41 (laatste wijziging 21/10/2006 13:59)
Avatar van beckers Nieuw lid Als je alleen pure tekst wil hebben kun je het lezen met file() en dan per byte kijken als het een letter, leesteken of een cijfer is, of geen teken.
Dus dit zou dan de volgende code kunnen worden:
  1. <?php
  2. $tekst=array();
  3. $bestand=file('bestand.doc');
  4. foreach($bestand as $byte){
  5. if(ord($byte)>xx and ord($byte)<xx) //Dit zijn ASCII-waardes. Voor de juiste waardes: www.lookuptables.com
  6. array_push($tekst, $byte);
  7. }
  8. $string=implode("", $tekst);
  9. ?>

Offline Stijn - 21/10/2006 13:51
Avatar van Stijn PHP expert Com class
er staat een voorbeeld bij voor Word. Ik moet zeggen dat hij nog niet gewerkt heeft bij mij Anders moet je gebruik maken van JS en ActiveXObject:
activexobject
Offline beckers - 22/10/2006 16:26 (laatste wijziging 22/10/2006 16:34)
Avatar van beckers 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:
  1. <?php
  2. function Doc_tekst($bestand){
  3. /* Eerst gaan we zorgen dat we alleen maar letters,
  4. cijfers, leestekens ed in onze string hebben,
  5. dan knippen we in de string.*/
  6. $doc = file_get_contents($bestand); // Direct met file() werken gaat niet goed: dan staat niet in elke key 1 teken.
  7. $array = array();
  8. for($i=0;$i<strlen($doc)-1;$i++){
  9. $char = substr($doc, $i, 1); // Substr geeft wel altijd maar 1 teken.
  10. array_push($array, ord($char)); // We plaatsen de ASCII-waarden in een array.
  11. }
  12. foreach($array as $ascii){
  13. 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.
  14. $string.= chr($ascii); // We zetten een letter in de string.
  15. }
  16. $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.)
  17. $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.
  18. $string = strrev($string); // De string staat weer juist.
  19. $string = substr($string, 0, -40); // De laatste bytes wegdoen. Er staan nog wel wat tekens, maar beter te weinig wegdoen dan te veel.
  20. return $string;
  21. }
  22. echo Doc_tekst('test.doc');
  23. ?>

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&#8364;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.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.206s