string controleren door middel van array
Ik heb een gegeven string, vb
Vervolgens heb ik een array:
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
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
<?
$materiaal= array(
"tas" => array(
"icon" => "tas",
"title" => "Tas",
"rule" => array(
"tas[/ ]([0-9.]{1,10})" => "\\1"
)
),
"handdoek" => array(
"icon" => "handdoek",
"title" => "Handdoek",
"rule" => array(
"handdoek[/ ]([0-9.]{1,10})" => "\\1"
),
),
"glas" => array(
"icon" => "glas",
"title" => "Glas",
"rule" => array(
"glas[/ ]([0-9.]{1,10})" => "\\1"
),
),
);
?>
$materiaal= array(
"tas" => array(
"icon" => "tas",
"title" => "Tas",
"rule" => array(
"tas[/ ]([0-9.]{1,10})" => "\\1"
)
),
"handdoek" => array(
"icon" => "handdoek",
"title" => "Handdoek",
"rule" => array(
"handdoek[/ ]([0-9.]{1,10})" => "\\1"
),
),
"glas" => array(
"icon" => "glas",
"title" => "Glas",
"rule" => array(
"glas[/ ]([0-9.]{1,10})" => "\\1"
),
),
);
?>
Nu zou ik graag willen controleren welke van de verschillende rule-waarden in de string voorkomen, en dan de title opvragen.
Ik heb het zo geprobeerd:
Code (php)
Ik weet dat het mis is, maar weet niet goed hoe ik het moet oplossen...
Dus 'zoekwoord' dan een '/' en dan de rest?
Heb je regex al geprobeerd?
steen schreef op 27.06.2009 17:43:
Kijk in dat geval eens naar get_browser().Doet me denken aan een browsercontrole met versienummer =)
Gewijzigd op 01/01/1970 01:00:00 door Midas
@ Santhe
het kan ook zijn dat het zo voorkomt:
@ steen
Code (php)
Maar dat werkt niet, die each is mis zeker? Maar weet niet hoe te vergelijken met die rule...
Ja die structuur van die rule is niet van mij maar van iemand anders, van het internet geplukt.
Eerst deed ik het gewoon met
Code (php)
en
$_getmateriaal['1'] = "tas[/ ]([0-9.]{1,10})";
enz...
Maar het in een array zetten en dan vergelijken lijkt mij handig, aangezien ik dan ook gelijk een titel,icon,... kan meegeven.
Gewijzigd op 01/01/1970 01:00:00 door bob Devlees
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$gegeven = 'handdoek/10';
// hier je hele array
foreach($materiaal as $inhoud) {
if(preg_match('_'.preg_quote($inhoud['rule'][0], '_').'_', $gegeven)) {
echo 'Komt overeen met '.$inhoud['title'];
}
}
?>
$gegeven = 'handdoek/10';
// hier je hele array
foreach($materiaal as $inhoud) {
if(preg_match('_'.preg_quote($inhoud['rule'][0], '_').'_', $gegeven)) {
echo 'Komt overeen met '.$inhoud['title'];
}
}
?>
Denk dat je dit bedoelt.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
ik heb het geprobeerd en krijg nu dit als foutmelding:
Undefined offset: 0 in class.php on line 5398
Dat is dus volgende lijn:
if(preg_match('_'.preg_quote($inhoud['rule'][0], '_').'_', $gegeven)) {
Soms staan er overigens meer items onder rule.. dus op deze manier:
Jezpur nog enig idee wat ik aan die foutmelding kan doen? :)