![]() |
|
Welcome to the Computer Webmaster Gaming Console Graphics Forum forums. You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today! If you have any problems with the registration process or your account login, please contact contact us. |
| |||||||
| PHP PHP for some can be one of the hardest website programming codes, so do you need help on your PHP script, if it is php4, php5 or lower this is the place for you for any PHP help. |
![]() |
| | LinkBack | Thread Tools | Display Modes |
| | #1 | ||
| Hello All, Been beating my head on the wall trying to get this working. Especially because of my *tweener level of php and regex experience. I have this $filename = C17AA001.000 I want to split it like this $a = C17AA $b = 001 $c = .000 I have tried this but can't get it to work. list($a, $b, $c,) = split("^[0-9a-zA-Z]{5}[0-9]{3}\.[0-9]{3}",$filename); echo $a; echo $b; echo $c; What am I missing here? Two days of googling and php.net have not cleared me up. Patrick *tweener - between novice and guru | |||
|
| Advertisements |
| | #2 | ||
| On Fri, 04 May 2007 13:35:19 -0400, Patrick wrote... > >Hello All, > >Been beating my head on the wall trying to get this working. Especially >because of my *tweener level of php and regex experience. > >I have this $filename = C17AA001.000 > >I want to split it like this $a = C17AA $b = 001 $c = .000 > >I have tried this but can't get it to work. > >list($a, $b, $c,) = split("^[0-9a-zA-Z]{5}[0-9]{3}\.[0-9]{3}",$filename); > >echo $a; >echo $b; >echo $c; > >What am I missing here? Two days of googling and php.net have not >cleared me up. > >Patrick > > > >*tweener - between novice and guru If the text is always in the format, including number of characters, the substr function may be easier to work with... $a = substr('C17AA001.000', 0, 4); $b = substr('C17AA001.000', 5, 7); $c = substr('C17AA001.000', 8, 11); Tom -- Newsguy.com - Basic Accounts $39.95 / 12 months | |||
|
| | #3 | ||
| Patrick kirjoitti: > Hello All, > > Been beating my head on the wall trying to get this working. Especially > because of my *tweener level of php and regex experience. > > I have this $filename = C17AA001.000 > > I want to split it like this $a = C17AA $b = 001 $c = .000 > > I have tried this but can't get it to work. > > list($a, $b, $c,) = split("^[0-9a-zA-Z]{5}[0-9]{3}\.[0-9]{3}",$filename); > > echo $a; > echo $b; > echo $c; > > What am I missing here? Two days of googling and php.net have not > cleared me up. The reg ex argument you give to split is not the entire string pattern, just the delimiter. You tell what pattern splits the string into pieces. Now you're giving it the entire string pattern that does match the whole string but so it basicly splits the string into two, the empty before the string and the empty after the string. You should be using preg_match 'stead of split. Try something like this: preg_match("^[0-9a-zA-Z]{5}[0-9]{3}\.[0-9]{3}",$matches,$filename); list($a, $b, $c,) = $matches; HTH -- Rami.Elomaa@gmail.com "Wikipedia on vähän niinq internetin raamattu, kukaan ei pohjimmiltaan usko siihen ja kukaan ei tiedä mikä pitää paikkansa." -- z00ze | |||
|
| | #4 | ||
| You're using split wrong - it's for "splitting it on boundaries formed by the case-sensitive regular expression" - the regex is the dividing boundary, not the text you're matching. Try this: $filename = 'C17AA001.000'; preg_match("/([0-9a-zA-Z]{5})([0-9]{3})(\.[0-9]{3})/",$filename, $matches); //print_r($matches); list($x, $a, $b, $c,) = $matches;//discard x echo $a; echo $b; echo $c; Aerik (a tweener myself) http://www.wikidweb.com - the Wiki Directory of the Web | |||
|
| | #5 | ||
| Aerik wrote: > You're using split wrong - it's for "splitting it on boundaries formed > by the case-sensitive regular expression" - the regex is the dividing > boundary, not the text you're matching. > > Try this: > > $filename = 'C17AA001.000'; > preg_match("/([0-9a-zA-Z]{5})([0-9]{3})(\.[0-9]{3})/",$filename, > $matches); > //print_r($matches); > list($x, $a, $b, $c,) = $matches;//discard x > echo $a; > echo $b; > echo $c; > > Aerik (a tweener myself) > http://www.wikidweb.com - the Wiki Directory of the Web > > Sweet and thanks. That did it for me. And being able to get that part working allowed me to finish and successfully test my php script which basically renames a directory of files from this C17AC000.000 C17AC001.000 C17AC002.000 C17AC003.000 C17AC004.000 C17AC005.000 C17AC006.000 to this C17AC.000 C17AC.001 C17AC.002 C17AC.003 C17AC.004 C17AC.005 C17AC.006 Regards, Patrick | |||
|
| Featured Websites | ||||
|
![]() |
| Tags: regex, split |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
| |
| Featured Websites | ||||
|