Afficher un message
Vieux 26/03/2008, 21h42   #3
Bob Bedford
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: string matching position.

Thanks a lot Peter, with your I've done it.

"petersprc" <petersprc@gmail.com> a écrit dans le message de news:
c3299cd2-9bca-483c-a6e3-ff841adc481f...oglegroups.com...
> 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.com> wrote:
>> 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 ing.
>>
>> Bob

>
>



  Réponse avec citation
 
Page generated in 0,05985 seconds with 9 queries