Zoeken in string werkt niet
Ik heb een CSV-bestand. Daar wil ik een aantal bewerkingen/filters op uitvoeren. Het is een overzicht van de bezetting van lokalen van ons onderwijscentrum. De CSV-export wordt gemaakt vanuit ons e-learning systeem (daar kan ik helaas niks aan wijzigen).
Eén van de filters die ik wil uitvoeren, is zoeken of bij de locatie (3e kolom) "lokaal" staat. Dat zou moeten lukken met strpos of stristr, maar die functies werken alleen als ik maar één letter als zoekwoord opgeef.
Wat ik nu heb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$handle = fopen($_FILES['file']['tmp_name'], "r");
$data = fgetcsv($handle, 1000, ";"); //Remove if CSV file does not have column headings
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{
$lokaal=$data[2];
$zoeklokaal='lokaal';
$geenzelfstudie=strpos($lokaal, $zoeklokaal);
if($geenzelfstudie !== false)
{
//rest vh programmeerwerk
}
?>
$handle = fopen($_FILES['file']['tmp_name'], "r");
$data = fgetcsv($handle, 1000, ";"); //Remove if CSV file does not have column headings
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{
$lokaal=$data[2];
$zoeklokaal='lokaal';
$geenzelfstudie=strpos($lokaal, $zoeklokaal);
if($geenzelfstudie !== false)
{
//rest vh programmeerwerk
}
?>
Als ik $lokaal echo, dan komt daar gewoon "lokaal 1" oid te staan, dus de gegevens komen wel uit de CSV. Als ik alleen een o bij $zoeklokaal zet, dan krijg ik alle lokalen, maar ook overal waar ook een o in zit.
Zit ik ergens enorm overheen te kijken of zou dit gewoon moeten werken?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
$handle = fopen($_FILES['file']['tmp_name'], 'r');
$data = fgetcsv($handle, 1000, ';'); //Remove if CSV file does not have column headings
while (($data = fgetcsv($handle, 1000, ';')) !== false)
{
if (stripos($data[2], 'lokaal') !== false) {
// We hebben een 'lokaal' of een 'Lokaal' of een 'LOKAAL'...
}
}
fclose($handle);
?>
$handle = fopen($_FILES['file']['tmp_name'], 'r');
$data = fgetcsv($handle, 1000, ';'); //Remove if CSV file does not have column headings
while (($data = fgetcsv($handle, 1000, ';')) !== false)
{
if (stripos($data[2], 'lokaal') !== false) {
// We hebben een 'lokaal' of een 'Lokaal' of een 'LOKAAL'...
}
}
fclose($handle);
?>
De CSV is als volgt opgebouwd overigens:
2013;Class 1;Zelfstudie;31-12-2013 0:00:00;1-1-1900 9:00:00;1-1-1900 12:00:00;
2013;Class 2;lokaal 5;27-12-2013 0:00:00;1-1-1900 15:00:00;1-1-1900 17:00:00;
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
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
<?php
while (($data = fgetcsv($handle, 1000, ';')) !== false)
{
if (stripos($data[2], 'lokaal') !== false) {
echo '<pre>';
var_dump($data);
/**
* Toont alleen de data met 'lokaal 5':
array(7) {
[0]=>
string(4) "2013"
[1]=>
string(7) "Class 2"
[2]=>
string(8) "lokaal 5"
[3]=>
string(18) "27-12-2013 0:00:00"
[4]=>
string(17) "1-1-1900 15:00:00"
[5]=>
string(17) "1-1-1900 17:00:00"
[6]=>
string(0) ""
}
*/
}
}
?>
while (($data = fgetcsv($handle, 1000, ';')) !== false)
{
if (stripos($data[2], 'lokaal') !== false) {
echo '<pre>';
var_dump($data);
/**
* Toont alleen de data met 'lokaal 5':
array(7) {
[0]=>
string(4) "2013"
[1]=>
string(7) "Class 2"
[2]=>
string(8) "lokaal 5"
[3]=>
string(18) "27-12-2013 0:00:00"
[4]=>
string(17) "1-1-1900 15:00:00"
[5]=>
string(17) "1-1-1900 17:00:00"
[6]=>
string(0) ""
}
*/
}
}
?>
Ik zit nu te zoeken hoe je $data[2]/de hele CSV om zou kunnen zetten zodat het wel werkt zonder de tussenstap met kladblok, maar dat wil nog niet lukken.