citaten-f-quotes
Code (php)
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?php
// functie "citaten"
// Aanroepen: $tekst = citaten($tekst, $zoekwoorden, $rondom, $beetje);
// Of kort: $tekst = citaten($tekst, $zoekwoorden);
// Voorbeeld: $tekst = citaten($tekst, $zoekwoorden, 20, 5);
function citaten($begintekst, $zoekwoorden, $rondom = 75, $beetje = 10 )
{
// vars instellen
$begintekst = strip_tags($begintekst);
$rondom = intval($rondom);
$beetje = intval($beetje);
$tekst = "";
$i = 0;
$positie = "";
$maximaal = strlen($begintekst);
$minimaal = 0;
$getallen = array();
$offset = 0;
$extra = 0;
$aantal = 0;
// controleer of $begintekst een string is
if (!is_string($begintekst))
{
// is dit een array? Wellicht kunnen we nog iets doen?
if(is_array($begintekst))
{
// als $begintekst een array is met maar 1 waarde... dan pakken we die gewoon
if(count($begintekst) == 1)
{
// neem key 0 (1 waarde dus) als $begintekst
$begintekst = $begintekst[0];
}
}
else
{
// return false... met $begintekst kunnen we niets
return false;
}
}
// controleer of $zoekwoorden een array is
if(!is_array($zoekwoorden))
{
// zo niet: exploden op komma/spatie
if(strpos($zoekwoorden, ", ")){explode(", ",$zoekwoorden);}
}
// nogmaals controleren
if(!is_array($zoekwoorden))
{
// return false... met $begintekst kunnen we niets
return false;
}
// alle zoekwoorden afgaan
foreach ($zoekwoorden as $woord)
{
// kijk hoeveel keer dit woord voor komt
preg_match_all("/$woord/i", $begintekst, $keren);
// alle woorden vinden
while($offset = strpos($begintekst, $woord, $offset + 1))
{
// tellers instellen
$i++;
$aantal = $i;
// gegevens opslaan
$posities[$i]['woord'] = $woord;
$posities[$i]['lengte'] = strlen($woord);
// zoeken naar eerste letter van dit woord
$posities[$i]['woord_begin'] = $offset;
// einde van dit woord berekenen
$posities[$i]['woord_eind'] = $posities[$i]['woord_begin'] + $posities[$i]['lengte'];
// begin van deze regel berekenen
$posities[$i]['zin_begin'] = $posities[$i]['woord_begin'] - $rondom;
if ($posities[$i]['zin_begin'] < $minimaal) {$posities[$i]['zin_begin'] = $minimaal;}
if ($posities[$i]['zin_begin'] < $beetje) {$posities[$i]['zin_begin'] = $minimaal;}
// eind van deze regel uitrekenen
$posities[$i]['zin_eind'] = $posities[$i]['woord_eind'] + $rondom;
if ($posities[$i]['zin_eind'] > $maximaal) {$posities[$i]['zin_eind'] = $maximaal;}
if (($maximaal - $posities[$i]['zin_eind'])< $beetje) {$posities[$i]['zin_eind'] = $maximaal;}
}
}
// kijk of er resultaten zijn in $posties
if (isset($posities))
{
//toon_array($posities);
// de array $posities sorteren op volgorde
usort($posities, "sort_key_eigen");
// teller weer instellen op 1
$i = 0;
// loop alle getallen af
while($i <= $aantal - 1)
{
// echo "\$i is nu $i<br>";
// deze zin uit de begintekst halen
$temp = substr($begintekst, $posities[$i]['zin_begin'], ($posities[$i]['zin_eind'] - $posities[$i]['zin_begin']));
// highlight de gezochte woorden met behulp van de functie
$temp = highlight($temp, $zoekwoorden);
// als er nog een zin is
if (!empty($temp))
{
// als de zin met NIET op 0 begint: geen punten tonen
if ($posities[$i]['zin_begin'] != 0) {$tekst = $tekst . "...";}
// tekst aanvullen met de nieuwe gegevens
$tekst = $tekst . $temp;
// als de zin met NIET op $maximaal stopt: geen punten tonen
if ($posities[$i]['zin_eind'] != $maximaal) {$tekst = $tekst . "...";}
// sowieso een enter toevoegen
$tekst = $tekst . "<br>";
}
// kijk of we het eind van het bericht al hebben berijkt (zo ja: $i met $aantal verhogen)
if ($posities[$i]['zin_eind'] == $maximaal)
{
// volgende overslaan (stoppen dus)
$extra = $aantal;
}
// kijk of het woord al een keer in deze zin staat
if (strpos($temp, $posities[$i]['woord'], ($rondom+1)))
{
// volgende overslaan
$extra = 0;
}
// teller verhogen
$i = $i + 1 + $extra ;
}
}
// $tekst terugeven
return $tekst;
}
?>
// functie "citaten"
// Aanroepen: $tekst = citaten($tekst, $zoekwoorden, $rondom, $beetje);
// Of kort: $tekst = citaten($tekst, $zoekwoorden);
// Voorbeeld: $tekst = citaten($tekst, $zoekwoorden, 20, 5);
function citaten($begintekst, $zoekwoorden, $rondom = 75, $beetje = 10 )
{
// vars instellen
$begintekst = strip_tags($begintekst);
$rondom = intval($rondom);
$beetje = intval($beetje);
$tekst = "";
$i = 0;
$positie = "";
$maximaal = strlen($begintekst);
$minimaal = 0;
$getallen = array();
$offset = 0;
$extra = 0;
$aantal = 0;
// controleer of $begintekst een string is
if (!is_string($begintekst))
{
// is dit een array? Wellicht kunnen we nog iets doen?
if(is_array($begintekst))
{
// als $begintekst een array is met maar 1 waarde... dan pakken we die gewoon
if(count($begintekst) == 1)
{
// neem key 0 (1 waarde dus) als $begintekst
$begintekst = $begintekst[0];
}
}
else
{
// return false... met $begintekst kunnen we niets
return false;
}
}
// controleer of $zoekwoorden een array is
if(!is_array($zoekwoorden))
{
// zo niet: exploden op komma/spatie
if(strpos($zoekwoorden, ", ")){explode(", ",$zoekwoorden);}
}
// nogmaals controleren
if(!is_array($zoekwoorden))
{
// return false... met $begintekst kunnen we niets
return false;
}
// alle zoekwoorden afgaan
foreach ($zoekwoorden as $woord)
{
// kijk hoeveel keer dit woord voor komt
preg_match_all("/$woord/i", $begintekst, $keren);
// alle woorden vinden
while($offset = strpos($begintekst, $woord, $offset + 1))
{
// tellers instellen
$i++;
$aantal = $i;
// gegevens opslaan
$posities[$i]['woord'] = $woord;
$posities[$i]['lengte'] = strlen($woord);
// zoeken naar eerste letter van dit woord
$posities[$i]['woord_begin'] = $offset;
// einde van dit woord berekenen
$posities[$i]['woord_eind'] = $posities[$i]['woord_begin'] + $posities[$i]['lengte'];
// begin van deze regel berekenen
$posities[$i]['zin_begin'] = $posities[$i]['woord_begin'] - $rondom;
if ($posities[$i]['zin_begin'] < $minimaal) {$posities[$i]['zin_begin'] = $minimaal;}
if ($posities[$i]['zin_begin'] < $beetje) {$posities[$i]['zin_begin'] = $minimaal;}
// eind van deze regel uitrekenen
$posities[$i]['zin_eind'] = $posities[$i]['woord_eind'] + $rondom;
if ($posities[$i]['zin_eind'] > $maximaal) {$posities[$i]['zin_eind'] = $maximaal;}
if (($maximaal - $posities[$i]['zin_eind'])< $beetje) {$posities[$i]['zin_eind'] = $maximaal;}
}
}
// kijk of er resultaten zijn in $posties
if (isset($posities))
{
//toon_array($posities);
// de array $posities sorteren op volgorde
usort($posities, "sort_key_eigen");
// teller weer instellen op 1
$i = 0;
// loop alle getallen af
while($i <= $aantal - 1)
{
// echo "\$i is nu $i<br>";
// deze zin uit de begintekst halen
$temp = substr($begintekst, $posities[$i]['zin_begin'], ($posities[$i]['zin_eind'] - $posities[$i]['zin_begin']));
// highlight de gezochte woorden met behulp van de functie
$temp = highlight($temp, $zoekwoorden);
// als er nog een zin is
if (!empty($temp))
{
// als de zin met NIET op 0 begint: geen punten tonen
if ($posities[$i]['zin_begin'] != 0) {$tekst = $tekst . "...";}
// tekst aanvullen met de nieuwe gegevens
$tekst = $tekst . $temp;
// als de zin met NIET op $maximaal stopt: geen punten tonen
if ($posities[$i]['zin_eind'] != $maximaal) {$tekst = $tekst . "...";}
// sowieso een enter toevoegen
$tekst = $tekst . "<br>";
}
// kijk of we het eind van het bericht al hebben berijkt (zo ja: $i met $aantal verhogen)
if ($posities[$i]['zin_eind'] == $maximaal)
{
// volgende overslaan (stoppen dus)
$extra = $aantal;
}
// kijk of het woord al een keer in deze zin staat
if (strpos($temp, $posities[$i]['woord'], ($rondom+1)))
{
// volgende overslaan
$extra = 0;
}
// teller verhogen
$i = $i + 1 + $extra ;
}
}
// $tekst terugeven
return $tekst;
}
?>