Re: [PHP] preg_match? Or something else?
Jim Lucas wrote: > Ashley M. Kirchner wrote: >> I have an array that's created as follows: >> >> >> >> $string = "73G146C 311- 309.1C"; >> >> >> Anyone want to take a stab at it? >> >> > > Conditionals are your friend! > > > $string = "73G146C 311- 309.1C"; > > $arr = preg_split("/[\s]+/", $string); > > print_r($arr); > > foreach ( $arr AS $item ) { > preg_match('|^(?P\d+)\.?(?P\d*)(?P[A-Z-])|', >$item, >$matches); > > print_r($matches); > } > > ?> > or w/ preg_match_all: http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] preg_match? Or something else?
Ashley M. Kirchner wrote: > I have an array that's created as follows: > > > > $string = "73G146C 311- 309.1C"; > > $arr = preg_split("/[\s]+/", $string); > > > > Now I need to take each element in that array, and break them up even > further so that I get: > > > > 73G=> "73" and "G" > > 146C => "146" and "C" > > 311- => "311" and "-" > > 309.1C => "309", "1", and "C" (notice 3 elements here) > > > > I'm having a hard time trying to figure out what the proper regex would be > for this, or whether that's the right thing to do. So far I've gotten this: > > > > preg_match("/^(?P\d+)(?P[A-Z-])/", $item, $matches); > > print_r($matches); > > > > Which gives me: > > > > Array > > ( > > [0] => 73G > > [location] => 73 > > [1] => 73 > > [letter] => G > > [2] => G > > ) > > Array > > ( > > [0] => 146C > > [location] => 146 > > [1] => 146 > > [letter] => C > > [2] => C > > ) > > Array > > ( > > [0] => 311- > > [location] => 311 > > [1] => 311 > > [letter] => - > > [2] => - > > ) > > Array > > ( > > ) > > However that's as far as it goes. For the other number it returns an empty > array and I know why, the decimal point. Now I can evaluate each $item > every time, see if they contain a decimal point, and pass it to a different > regex string, but that seems rather inefficient to me. So how can I do this > all in one fell swoop? > > Anyone want to take a stab at it? > > Conditionals are your friend! \d+)\.?(?P\d*)(?P[A-Z-])|', $item, $matches); print_r($matches); } ?> -- Jim Lucas NOC Manager 541-323-9113 BendTel, Inc. http://www.bendtel.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] preg_match? Or something else?
I have an array that's created as follows: $string = "73G146C 311- 309.1C"; $arr = preg_split("/[\s]+/", $string); Now I need to take each element in that array, and break them up even further so that I get: 73G=> "73" and "G" 146C => "146" and "C" 311- => "311" and "-" 309.1C => "309", "1", and "C" (notice 3 elements here) I'm having a hard time trying to figure out what the proper regex would be for this, or whether that's the right thing to do. So far I've gotten this: preg_match("/^(?P\d+)(?P[A-Z-])/", $item, $matches); print_r($matches); Which gives me: Array ( [0] => 73G [location] => 73 [1] => 73 [letter] => G [2] => G ) Array ( [0] => 146C [location] => 146 [1] => 146 [letter] => C [2] => C ) Array ( [0] => 311- [location] => 311 [1] => 311 [letter] => - [2] => - ) Array ( ) However that's as far as it goes. For the other number it returns an empty array and I know why, the decimal point. Now I can evaluate each $item every time, see if they contain a decimal point, and pass it to a different regex string, but that seems rather inefficient to me. So how can I do this all in one fell swoop? Anyone want to take a stab at it?