Filteren van woorden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter S

Peter S

03/08/2014 13:52:06
Quote Anchor link
Ik haal data op uit een bestand > hier wil ik woorden uit filteren > vervolgens opslaan in database. Alleen het filteren van de woorden gaat nog niet helemaal goed.

Ik krijg de volgende foutmelding:
"Warning: preg_replace() expects parameter 4 to be long, string given in /home/.... on line 24"

Onderstaande code zijn regel 23 en 24:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$titleb = replace(trim(stripslashes(htmlentities($list->lange_titel, ENT_COMPAT, "UTF-8"))));
$titlec = preg_replace("/Huis/", "/Huis /", "/Vereniging/", "/Aparthotel/", $titleb);


Wanneer ik er enkele woorden uithaal lijkt het wel goed te gaan.
Kortom: welke code moet ik gebruiken als ik meerdere woorden eruit wil filteren?
Gewijzigd op 03/08/2014 13:52:40 door Peter S
 
PHP hulp

PHP hulp

22/11/2024 05:50:45
 
- SanThe -

- SanThe -

03/08/2014 14:17:16
Quote Anchor link
Van php.net:
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
Als je 5 parameters meegeeft moeten de laatste 2 integers zijn.
 
Goto Learn

Goto Learn

03/08/2014 15:11:35
Quote Anchor link
Geen idee of dit is wat je zoekt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$titleb
= trim(stripslashes(htmlentities($list->lange_titel, ENT_COMPAT, "UTF-8")));
$titleArray = array("Huis", "Huis ", "Vereniging", "Aparthotel");

if(in_array($titlec, $titleArray))
{

    $newtitle = str_replace($titlec, $titleb, $titlec);
    echo $newtitle;
}

?>
 
Peter S

Peter S

03/08/2014 15:24:55
Quote Anchor link
@Goto Learn: Volgens mij doet deze het dan precies andersom?

Voorbeeldje om het duidelijker te maken. Nu is de waarde bijvoorbeeld "Vogel vereniging" of "Huis te Zeezicht". In dit voorbeeld moet vereniging en huis eruit zodat je krijgt "Vogel" en "te Zeezicht".
 
Goto Learn

Goto Learn

03/08/2014 15:28:58
Quote Anchor link
@Peter S

Aah okee, nu begrijp ik het beter ja. In dat geval zul je dus een regex moeten gebruiken en daar vind je wel genoeg informatie over op google.. Zoek naar soortgelijke voorbeelden.

Toevoeging op 03/08/2014 15:37:59:

Probeer dit eens:

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
<?php
$string
= 'In mijn huis word er niet gefeest!';
$myWords = array('huis', 'Etc..', 'Etc..', 'Etc..');
$Check = array();

$CheckFound = preg_match_all('/\b(' . implode($myWords, '|') . ')\b/i', $string, $Check);

if ($CheckFound) {

$Words = array_unique($Check[0]);

    foreach ($Words as $Word) {
    $string = str_replace($Word, '', $string);
    echo $string;
    }
}

?>
 
Peter S

Peter S

03/08/2014 21:47:44
Quote Anchor link
Dit werkt inderdaad, thanks.
Gewijzigd op 03/08/2014 22:40:47 door Peter S
 
Goto Learn

Goto Learn

03/08/2014 23:34:36
Quote Anchor link
@Peter S

Graag gedaan. Het is overigens een goed idee om strtolower() bij te voegen voor het geval iemand hoofdletters gebruikt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $CheckFound = preg_match_all('/\b(' . implode($myWords, '|') . ')\b/i', strtolower($string), $Check); ?>
 



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.