Hi,
You need a small routine to parse the data into an array.
This script will do it:
<?
function parseData($txt)
{
$lines = split("\n", $txt);
$codes = array();
$code = null;
for ($i = 0; $i < count($lines); $i++) {
$line = $lines[$i];
if (preg_match('/^code = (\d+)$/', $line, $m)) {
$code = $m[1];
} elseif (preg_match('/^subcode (\d+) values ((?:\d+;)*(?:\d+))
$/',
$line, $m)) {
if (is_null($code)) {
throw new Exception('No code set at line ' . ($i + 1) . '.');
}
$vals = split(';', $m[2]);
foreach ($vals as $val) {
$codes[$code][$val] = $m[1];
}
} elseif ($line == '') {
if (is_null($code)) {
throw new Exception('Unexpected empty line at line ' .
($i + 1) . '.');
}
$code = null;
} else {
throw new Exception('Unable to process line ' . ($i + 1) . '.');
}
}
return $codes;
}
function getSubcode($codes, $code, $val)
{
return isset($codes[$code]) && isset($codes[$code][$val]) ?
$codes[$code][$val] : false;
}
function test()
{
$txt = <<<end
code = 1
subcode 65 values 06101;06102;06103;06106;06108;06109
subcode 69 values 07003;07004;07007;07008;07009;07012;07013
code = 2
subcode 65 values 61215;61218;61558;61587
subcode 69 values 83662;83667;83668
end;
$codes = parseData($txt);
echo "Subcode for code 1 and value 06108 is " .
getSubcode($codes, 1, '06108') . ".<br>\n";
echo "Subcode for code 2 and value 83668 is " .
getSubcode($codes, 2, '83668') . ".<br>\n";
echo "Subcode for code 3 and value 12345 is " .
getSubcode($codes, 3, '12345') . ".<br>\n";
}
test();
?>
On Mar 26, 12:22 pm, "Bob Bedford" <b...@bedford.comwrote:
Hello,
I've a string and all sort of values in wich I've to check and return the
correct value.
Here is a sample (simplified as I've a huge amount of datas):
code = 1
subcode 65 values 06101;06102;06103;06106;06108;06109
subcode 69 values 07003;07004;07007;07008;07009;07012;07013
code = 2
subcode 65 values 61215;61218;61558;61587
subcode 69 values 83662:83667;83668
Now I've a given code and value and I need to know the subcode.
I mean if I give the function code=1 and value = 06108 then the function
should return 65
if I give the function code=2 and value = 83668 then the returned subcode
must be 69
How to do so ?
Thanks for helping.
Bob