Filteren van woorden
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)
1
2
2
$titleb = replace(trim(stripslashes(htmlentities($list->lange_titel, ENT_COMPAT, "UTF-8"))));
$titlec = preg_replace("/Huis/", "/Huis /", "/Vereniging/", "/Aparthotel/", $titleb);
$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
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
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;
}
?>
$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;
}
?>
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".
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
}
}
?>
$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;
}
}
?>
Gewijzigd op 03/08/2014 22:40:47 door Peter S
Graag gedaan. Het is overigens een goed idee om strtolower() bij te voegen voor het geval iemand hoofdletters gebruikt.
Code (php)
1
<?php $CheckFound = preg_match_all('/\b(' . implode($myWords, '|') . ')\b/i', strtolower($string), $Check); ?>