Checken inhoud document (Word)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

BizTalk/ Azure Developer

Dit ga je doen •Understanding the scope of required functionality, translate them within context of way of working of the team into developed solutions, whilst safeguarding documentation; •Planning based on assigned sprint tasks; •Acting as an expert in estimation techniques and planning; •Understanding your role in the agile process and act in this way; •Facilitating internal communication and effective collaboration; •Working closely with scrum master to handle backlogs and new requests; •Providing information to the third parties about activities and needs for compliance. Hier ga je werken Our client is a leading organization focusing on animal nutrition, offering solutions that

Bekijk vacature »

Ontwikkelaar Identity & Access Management

Dit ga je doen Als Identity & Access Management Ontwikkelaar zorg jij er voor dat studenten, medewerkers en docenten de juiste benodigdheden op het juiste moment kunnen gebruiken; Het juist opslaan van onderzoeksdata en het openbaar beschikbaar stellen van publicaties (Open Access); Studenten, collega's en wetenschappers ondersteunen; Agile en Scrum werken; Technisch Applicatiebeheer; Ontwikkelen in One Identity Manager en VB.NET. Hier ga je werken Als Ontwikkelaar kom je terecht in een hecht team die zich richt op wetenschappelijke informatie en ICT. Jij bent degene die er voor zorgt dat alle informatie, uit diverse onderzoeken, bij de juiste personen terecht komt.

Bekijk vacature »

C# .NET Software Ontwikkelaar

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Arnhem gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Als C# .NET Developer binnen dit bedrijf houd je je niet alleen bezig met het verbeteren van

Bekijk vacature »

Fullstack Developer

Functieomschrijving Voor een erkende werkgever in regio Etten-Leur zijn wij op zoek naar een Fullstack Developer met PHP/Laravel ervaring. Je gaat aan de slag met het bouwen van maatwerk software voor klanten die actief zijn in een specifieke markt. Als fullstack developer ben je samen met een enthousiast team van 7 collega’s verantwoordelijk voor de ontwikkeling, beheer en innovatie van informatiesystemen voor klanten in een specifieke branche. Verder ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Ervaring met Laravel is een must. Om de klant zo goed mogelijk te

Bekijk vacature »

SQL database developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als SQL database developer? Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het development team zijn wij op zoek naar een SQL database ontwikkelaar. Wil jij werken voor een groeiende werkgever in regio Breda waar jij de ruimte en tijd krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je houdt je bezig met het creëren en bouwen van MS SQL server databases; Je werkt aan innovatieve softwareoplossingen voor het verbeteren en/of vernieuwen van logistieke processen; Je gaat projecten vanaf het begin tot het

Bekijk vacature »

Full stack developer Node.js

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Front end developer Zorgplatform

Functie Jij als Front end ontwikkelen zult komen te werken samen met 1 PHP ontwikkelaar, 1 Python developer en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De Marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult als Front ender dus voornamelijk bezig zijn met het verbeteren van onze interfaces op onze verschillende producten. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een gewaardeerde werkgever in regio Oosterhout zijn wij op zoek naar een back-end developer. Kennis of ervaring met C# & SQL is een must! Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je brengt de aanpassingssuggesties van klanten in kaart, om

Bekijk vacature »

Full stack .NET developer Microsoft 365

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Robot Programmeur

Een verantwoordelijke baan met leuke uitdagingen. Heb jij ervaring met het programmeren van robots? Kan jij goed samenwerken met collega's die verschillende specialisaties hebben? Ben je oplossingsgericht, analytisch en flexibel? Ga dan aan de slag als Robot Programmeur bij Gibas in Nijkerk! Als Robot Programmeur kom je te werken bij Gibas. Dat betekent dat je gegarandeerd meewerkt aan unieke oplossingen in productieprocessen. Bij elk project moet er opnieuw geëngineerd en geprogrammeerd worden. Dat maakt jouw werk uitdagend! Voordat je robots gaat programmeren komt er het volgende bij kijken: De opdracht gaat van de afdeling Sales naar de afdeling Operations door

Bekijk vacature »

(Junior) Back-end Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Altijd al willen werken bij een organisatie, die maatwerk applicaties bouwt, die echt impact hebben in de maatschappij? Dit is je kans. Voor een kleine organisatie in de regio van Eindhoven ben ik op zoek naar een C# Ontwikkelaar. Jij gaat aan de slag met de ontwikkeling van maatwerk software en applicaties. Deze organisatie werkt voor grote organisaties in Nederland, maar ook voor het MKB. De projecten waar je aan gaat werken zijn erg divers, waardoor je werk uitdagend blijft en je erg veel kan leren. Verder ga je aan

Bekijk vacature »

Laravel / PHP developer

Functie omschrijving Wij zijn op zoek naar een Medior PHP / Laravel Developer voor een IT-consultancy in de omgeving van Hoofddorp! Ben jij op zoek naar een leuke nieuwe uitdaging binnen een veelzijdige werkomgeving? Lees dan snel verder! Binnen dit bedrijf werk je in een ontwikkelteam, waarin je zeer betrokken bent en meedenkt over softwareoplossingen. Binnen dit Team hou je je bezig met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken;

Bekijk vacature »

OutSystems developer

Dit ga je doen Klanten adviseren over de mogelijkheden van OutSystems; OutSystems oplossingen ontwikkelen en implementeren; Stakeholdermanagement; Kennis en expertise up to date houden en delen met het team. Hier ga je werken Onze opdrachtgever, gevestigd in regio Amsterdam, is een innovatieve dienstverlener die zich richt op grote corporates in verschillende sectoren. Doordat je bij veel verschillende klanten aan de slag zal gaan is geen enkel project hetzelfde. De organisatie kenmerkt zich door hoge mate van professionaliteit en innovatieve oplossingen. In de rol van OutSystems developer zal jij verschillende grote klanten helpen om efficiënte OutSystems oplossingen te ontwikkelen en implementeren.

Bekijk vacature »

Front-end PHP Developer

Dit ga je doen Bouwen van de frontend van een nieuwe applicaties; Verbeteren van de user experience; Opstellen van een style guide; Schakelen met collega developers over de te bouwen oplossing; Je speelt een belangrijke rol in het neerzetten van het nieuwe systeem; Werken met o.a. Symfony 6, API Platform, Twig, Javascript, Redis Automatiseren van processen; Koppelen van verschillende functionaliteiten; Unit tests, integration tests, end-to-end tests; In de toekomst ga je nog werken aan andere projecten. Hier ga je werken Voor onze vaste opdrachtgever in de regio Breda zijn wij op zoek naar een Frontend Developer. Het betreft een organisatie

Bekijk vacature »
Hans De Ridder

Hans De Ridder

13/03/2016 12:06:35
Quote Anchor link
Ik geef leden van mijn website de mogelijkheid een soort nieuwsbrief in te sturen in Word.
Deze worden getoond via een embedded google docs.
Nu wil ik vooraf automatisch de inhoud van de tekst controleten op bijv. verboden linkjes.
Kan dit in PHP?
 
PHP hulp

PHP hulp

04/12/2024 20:38:47
 

14/03/2016 13:59:10
Quote Anchor link
Ja dat kan eenvoudig, mits de indeling Word 2007 (.docx) is. In dat geval is het Word-document onderhuids een zip-bestand met allemaal XML code. Daar is PHP goed in.

Je pakt het document dat naar de server is gestuurd uit (http://nl1.php.net/manual/en/book.zip.php) naar een map, daarin vind je het bestand word/document.xml en dat laad je in (http://nl1.php.net/manual/en/class.domdocument.php). Als je het DOMDocument-object platslaat als string, dan heb je in 1x de platte tekst.
Linkjes gaat ietsje ingewikkelder, maar dat moet je erg eenvoudig kunnen terugvinden in de XML. Het formaat is beter bekend als WordML.
Gewijzigd op 14/03/2016 14:03:20 door
 
Hans De Ridder

Hans De Ridder

14/03/2016 14:49:23
Quote Anchor link
Dank je wel voor je reactie.
Ik had ook al twee scripts gevonden in die richting.
Als ze samen willen werken laat ik het wel weten..
 
Hans De Ridder

Hans De Ridder

07/04/2016 17:30:04
Quote Anchor link
Ik heb inmiddels wat scripts uitgeprobeerd die DOCX omzetten naar TXT.
Ook met PDF bestanden gekeken.
Maar ze komen allemaal met een zuivere tekststring zonder linkjes.
Er is wel een mogelijkheid om bijv. afbeeldingen eruit te vissen.
Voor zover mij bekend staan de gegevens over de linkjes ook niet in de XML.
Ik hoef alleen maar te weten of er linkje(s) worden gebruikt.
Dan accepteer ik het document niet.
Maar nog niet gevonden dus.
Wel een script om binnen een string te kijken of er een link in zit.
Tips Blijven welkom!




Toevoeging op 07/04/2016 19:53:22:

Ik heb tot nu toe vanuit WORD een PDF bestand gemaakt.
Het maakt blijkbaar uit of ik echt iets als link schrijf (www.pctraverse.nl)
Of dat ik iets schrijf als mijn naam (Hans) en er dan een link van maak.
Zet ik dat om naar PDF dan wordt er een string van gemaakt.
Maar alleen de uitgeschreven link wordt geteld.
De andere wordt in de string gewoon gezien als naam (Hans).
Beetje denkwerk verrichten.


Toevoeging op 07/04/2016 20:32:24:

Zelfde doet zich voor als ik gewoon een DOCX bestand opslaat op de manier zoals aangegeven.
De echte linkjes worden netjes geteld, de bewerkte niet (Hans en dan een hyperlink er van maken)

Toevoeging op 07/04/2016 21:44:05:

Volgende script gebruik ik nu.
Ik heb even de XML bekeken van een bestand.
Ik moet niet zoeken in de string denk ik.
Maar op zoek gaan naar het woord "Hyperlink" in de XML.
Iemand een idee hoe ik in de XML kan kijken?
Het mag wel een string zijn maar dan moeten die gegevens neem
ik aan volledig worden weergegeven. Ander kom je het woord niet tegen.
Als ik het zip bestand open, dan zit het in de map "word".
En heet document.xml

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
function readZippedXML($archiveFile, $dataFile) {
    // Create new ZIP archive
    $zip = new ZipArchive;

    // Open received archive file
    if (true === $zip->open($archiveFile)) {
        // If done, search for the data file in the archive
        if (($index = $zip->locateName($dataFile)) !== false) {
            // If found, read it to the string
            $data = $zip->getFromIndex($index);
            // Close archive file
            $zip->close();
            // Load XML from a string
            // Skip errors and warnings
            $xml = new DOMDocument();
            $xml->loadXML($data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
            // Return data without XML formatting tags
            return strip_tags($xml->saveXML());
        }
        $zip->close();
    }

    // In case of failure return empty string
    return "";
}

$str = docx2text("test.docx"); // Save this contents to file



function makeLinks($str) {
    
    $reg_exUrl = "/(((http|https|ftp|ftps)\:\/\/)|(www\.))[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\:[0-9]+)?(\/\S*)?/";
    $urls = array();
    $urlsToReplace = array();
    if(preg_match_all($reg_exUrl, $str, $urls)) {
        $numOfMatches = count($urls[0]);
        echo "aantal url ".$numOfMatches."<br>";
        $numOfUrlsToReplace = 0;
        for($i=0; $i<$numOfMatches; $i++) {
            $alreadyAdded = false;
            $numOfUrlsToReplace = count($urlsToReplace);
            for($j=0; $j<$numOfUrlsToReplace; $j++) {
                if($urlsToReplace[$j] == $urls[0][$i]) {
                    $alreadyAdded = true;
                }
            }
            if(!$alreadyAdded) {
                array_push($urlsToReplace, $urls[0][$i]);
            }
        }
        $numOfUrlsToReplace = count($urlsToReplace);
        for($i=0; $i<$numOfUrlsToReplace; $i++) {
            $str = str_replace($urlsToReplace[$i], "<a href=\"".$urlsToReplace[$i]."\">".$urlsToReplace[$i]."</a> ", $str);
        }
        echo $str;
    } else {
        echo $str;
    }
}


Na

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$numOfMatches = count($urls[0]);


heb ik de rest niet echt nodig meer.
Gewijzigd op 07/04/2016 22:25:38 door Hans De Ridder
 

07/04/2016 22:15:03
Quote Anchor link
Even zonder code, maar volgens de specificaties van het bestandsformaat, en dan kijk ik hier:
https://msdn.microsoft.com/en-us/library/ms406049.aspx#office2007WordFileFormat

Het bestandsformaat is Open XML, links heten kennelijk hyperlinks en worden opgeslagen als een bepaald type relationship in een map "_rels" of bestand met een ".rels" -extentie.
Om te weten of er links worden gebruikt moet je kijken of er in die verzameling(en) met relationships één of meer voorkomens zijn van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<Relationship Id="someID" Type="http://schemas.microsoft.com/office/2006/relationships/hyperlink" Target="targetPart"/>


En dan weet je in als er bijvoorbeeld in de document.xml een referentie voorkomt, naar welke URL (targetPart?) die verwijst.

Disclaimer: ik vat nu de inhoud van de MSDN samen, maar ik heb het nog niet zelf uitgeprobeerd. Uiteraard ben ik benieuwd hoe het wil lukken.


Toevoeging op 07/04/2016 22:18:11:

Owh, en XML inlezen na het uitpakken kan idd. het beste met DOMDocument, en vervolgens met XPath-queries. De manual en usercomments moeten je in de goede weg wijzen, en als je het snel wilt snappen is er altijd nog het onvolprezen W3schools.com
 
Hans De Ridder

Hans De Ridder

07/04/2016 22:36:06
Quote Anchor link
Dank voor je reactie.
Ik heb de docx uitgepakt met Winrar.
Had inderdaad gelezen dat in die map '_rel' wat moest staan.
Ik kom alleen iets specifieks tegen in het document.XML.
Wil ik die hyperlinks traceren (ook die niet volledig uitgeschreven zijn)
dan kan ik dat doen als ik dat XML bestand compleet als string kan weergeven.
In het script is daar ook aan voldaan.
Maar er worden daarna functies gebruikt om dat weer eruit te filteren.
Er moet ergens een functie zijn waarmee ik die XML kan uitlezen voordat die filtering optreedt.
Helaas nog niet gevonden...
Dit is een stukje uit de XML
Je ziet dan ook dat er hyperlinken bestaan van een echte URL, maar ook van het woord waar een hyperlink van is gemaakt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- <w:r w:rsidRPr="00064D41">
- <w:rPr>
  <w:rStyle w:val="Hyperlink" />
  </w:rPr>
  <w:t>Hans de Ridder</w:t>
  </w:r>
  </w:hyperlink>
  </w:p>
- <w:p w:rsidR="00064D41" w:rsidRDefault="00064D41">
- <w:r>
  <w:t>Verder gaat het wel</w:t>
  </w:r>
  </w:p>
- <w:p w:rsidR="004C2D21" w:rsidRDefault="004C2D21">
- <w:hyperlink r:id="rId5" w:history="1">
- <w:r w:rsidRPr="00761600">
- <w:rPr>
  <w:rStyle w:val="Hyperlink" />
  </w:rPr>
  <w:t>www.pctraverse.nl</w:t>
  </w:r>
  </w:hyperlink>
Gewijzigd op 07/04/2016 22:38:01 door Hans De Ridder
 
Thomas van den Heuvel

Thomas van den Heuvel

08/04/2016 00:51:44
Quote Anchor link
Quote:
Ik geef leden van mijn website de mogelijkheid een soort nieuwsbrief in te sturen in Word.

Maar waarom in Word? Wat is er mis met HTML in een nieuwsbrief?
 
Ben van Velzen

Ben van Velzen

08/04/2016 01:09:57
Quote Anchor link
Terzijde:
@Thomas zie je ooit mensen een HTML document aanleveren als kopij?

Even serieus nu: Waarom vraag je niet gewoon om platte tekst als kopij? Dat maakt je leven een stuk makkelijker (een link is zo herkend). Maar zoals je zelf al ziet bevat de XML de volledige informatie die je nodig hebt, en zelfs dan nog een stukje. Maar als je alleen wilt automatiseren dat een document wordt afgewezen op basis van het wel of niet aanwezig zijn van een link zou ik dit gewoon lekker laten voor wat het is. Kopij is meer dan het wel of niet aanwezig zijn van een link, en bij het doorlezen kom je deze snel genoeg tegen. Je hebt ongetwijfeld meer regels, zoals geen spam over een eigen bedrijf, niet haatdragend etc. Dit voelt dan een beetje als een zinloze controle.
 

08/04/2016 09:11:37
Quote Anchor link
Volgens mij kijk je er overheen, op regel 15 en 16 van je eigen code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$xml = new DOMDocument();
$xml->loadXML($data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);

Vanaf dat moment heb je in de variabele $xml een pointer naar een instantie van het DOMDocument-object, waarmee je de XML-boom kan uitlezen en aanpassen, op het niveau van de structuur zelf, met nodes, attributen, etc.

Het enige dat je dan nog nodig hebt is een zoekfunctie om snel alle nodes op een rij te krijgen zodat je er doorheen kunt gaan met bv. een foreach-lus. Daar heb je XPath bij nodig.

http://php.net/manual/en/class.domdocument.php
http://php.net/manual/en/class.domxpath.php

De tweede link bevat een codevoorbeeld. XPath is een query-taal die je dan ook moet beheersen. Een introductie vind je hier: http://www.w3schools.com/xsl/xpath_intro.asp

Probeer het eerst vooral zelf, mocht je er niet uitkomen dan horen we het wel :-)
 
Hans De Ridder

Hans De Ridder

08/04/2016 11:27:22
Quote Anchor link
Bedankt voor de reacties.
Misschien is 'nieuwsbrief' ook wel niet het juiste woord.
Want ga het script ook gebruiken bij rubrieken 'gestolen/vraag/aanbod.
Leden mogen een opgemaakt WORD bestand inleveren.
Maar omdat het een servicesite betreft voor artiesten, producenten, mensen van het geluid, etc.
moet ik ivm wetgeving een aantal zaken voorkomen.
Een van die dingen is het gebruik van linkjes voor uploads- en downloads van oa clouds.
Dus dat is wel een prioriteit.
Ik had wel wat scripts gevonden, maar die ontdekken uitsluitend de uitgeschreven linkjes als www.site.nl.
De woorden en zinnen binnen een word document waarvan een hyperlink is gemaakt, staan in string gewoon als naam of zin aangegeven.
Het zoeken moet dus worden gedaan in de XML file, waar daar komt als trefwoord 'hyperlink' voorbij, zowel voor de beschreven
linkjes als de gemaakte hyperlinks.
Had al wat zaken weggehaald en veranderd in die scripts. Maar verandere niet veel.
Overigens is het vinden van 1 'hyperlink' voldoende om af te keuren.
En optie daarbij is dan inderdaad dat je ook kunt filteren op schuttingtaal, enz.
Ik zal me er nog eens in verdiepen. Als het werkt horen jullie het wel weer.
Fijn weekend!





Toevoeging op 08/04/2016 23:08:33:

Hoe dom kun je zijn, haha...
De scripts werkten wel allemaal.
Alleen liet ik het resultaat telkens echoen in de browser.
Dan worden de codes niet zichtbaar, alleen de uitwerking uiteraard.
Toen ik uiteindelijk in de broncode keek veranderde wel degelijk iets.
Dus kan nu weer verder....
Gewijzigd op 08/04/2016 23:05:06 door Hans De Ridder
 
Hans De Ridder

Hans De Ridder

11/04/2016 13:51:53
Quote Anchor link
Ik ben er uit wat het vinden van de hyperlinks betreft.
Bij het zoeken van schuttingtaal ben ik wel op een probleempje gestuit.
Door het wegfilteren van de XML tags is het aantal woorden wel afgenomen.
Maar ook het aantal spaties is oncontroleerbaar geworden. Woorden worden soms aan elkaar gebreid.
Er kan bijv. nu een string komen van:

Hans is een prutser, maar prutserzijnis ook niet altijd verkeerd.

Op zich niet zo'n probleem.
Maar nu moet ik dus voor het zoeken naar 'prutser' zowel zoeken naar een zelfstandig woord.
Maar ook binnen een substring van 'prutserzijnis'.
Uiteraard mag het niet uitmaken of er hoofdletters of kleine letters gebruikt worden.
Er kan nu ook onbedoeld schuttingtaal ontstaan, haha

Ik heb mijn buik vol Ulft.... Ik heb mijn buik volUlft....

Het aantal woorden baseer ik nu op de spatie tussen woorden.
Dus is in deze voorbeeldzin 10.
Is er een eenvoudige functie om dit te realiseren.
Gaat ook nog om meerdere woorden uiteraard om te zoeken.
Bedankt voor het meedenken.
Gewijzigd op 11/04/2016 14:00:25 door Hans De Ridder
 
Thomas van den Heuvel

Thomas van den Heuvel

11/04/2016 14:11:17
Quote Anchor link
Een blacklist met scheldwoorden gaat je waarschijnlijk niet redden.

Je geeft zelf ook al een voorbeeld van "false positives".

Overweeg moderatie, lijkt mij een stuk simpeler.
 
Hans De Ridder

Hans De Ridder

11/04/2016 14:38:06
Quote Anchor link
Ik kan natuurlijk wel een filter erbij zetten.
En als het een false positive geeft kan men de webbeheerder vragen.
Dan kan het document inderdaad door de webbeheerder alsnog geplaatst worden.
Zijn nooit documenten waar veel haast mee is.
Gewijzigd op 11/04/2016 14:38:46 door Hans De Ridder
 

11/04/2016 17:32:23
Quote Anchor link
De mogelijkheden zijn eindeloos.
Je kunt het ook omkeren: woorden whitelisten, omdat mensen ook gewoon k1ootzak (met cijfer 1 als kleine letter L) kunnen typen. Je kunt via http://www.opentaal.org beginnen met een basiswoordenlijst, en alleen woorden die niet bekend zijn er uit laten springen door het filter. Dan hoeft een moderator maar éénmalig veilige woorden toe te voegen via een "toestaan"- en "verbannen"-knop.
 
Hans De Ridder

Hans De Ridder

11/04/2016 19:17:15
Quote Anchor link
Dit heb ik er voorlopig van gebakken.
Denk dat ik in een tabel inderdaad de schuttingwoorden ga opslaan (en eventueel variaties). Dan kan ik via administratiepaneel woorden toevoegen.
Zal allemaal best mooier en beter uitgeschreven kunnen worden.
Dus kom gerust met veranderingen en verbeteringen.

Ik gebruik nu de XML string na enige filtering met tags om het woord "Hyperlink" te vinden.
Dat was nodig omdat WORD een gewone link (www.site.nl) anders interpreteert in XML dan een gemaakte link van een zin of woord.
Daarna gaan alle tags eruit.
En wordt de string gecontroleerd op scheldwoorden.
Komt er een link en/of scheldwoord voor dan kan het document niet geupload worden.
Zit een een verkeerde positief in, dan kan men contact opnemen met de webbeheerder.

Als je de complete XML bewaart, dan is het in principe mogelijk om woorden en linkjes te vervangen door bijv. "***". En daarna de omgekeerde weg te bewandelen om het weer terug in de zip te zetten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?
 
$document
= 'test.docx';
$c =  strtolower(extracttext($document));
$d = woordfilter($c);
$e = linkfilter($d);
echo $e."<br>";
$f = strip_tags($c);
$h = scheldfilter($f);
echo $h;

function
scheldfilter($f)
{

$schelden = array ('kat', 'hond', 'eend');

$sc = count($schelden);
$x = 0;

while ($x < $sc)
{

$sch = $schelden[$x];
$sche = strpos($f, $sch);

if ($sche >-1)    
        {
        
return "Scheldwoord(en) gevonden <br>";
}

$x ++;
}    
}    

function
woordfilter($c)
{

    $filter = array("openxmlformats", "<?xml version","</w:document>",
            "http://schemas.microsoft.com/office/word/2006/wordml","http://schemas.openxmlformats.org/officeDocument/2006/");
    
    $text = str_replace($filter,"", $c);
    return $text;
}

function
linkfilter($d)
{

if(strstr($d, 'hyperlink')){
return "Linkje(s) gevonden <br>";    
}

else
{return "oke";}
}



/**Function to extract text*/
function extracttext($filename) {
    //Check for extension
    $ext = end(explode('.', $filename));
 
    //if its docx file
    if($ext == 'docx')
    $dataFile = "word/document.xml";
    //else it must be odt file
    else
    $dataFile = "content.xml";    
      
    echo $datafile;
    //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
            return $xml->saveXML();
            //return $xml->saveXML();
        }
        //Close the archive file
        $zip->close();
    }

 
    // In case of failure return a message
    return "File not found";
}

 
?>

 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.