Re: how to explode or split or chunk in an efficient way

From: Date: Thu, 24 Jul 2014 20:06:44 +0000
Subject: Re: how to explode or split or chunk in an efficient way
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-323661@lists.php.net to get a copy of this message
Sincerely Negin Nickparsa On Thu, Jul 24, 2014 at 12:04 PM, Robert Cummings <robert@interjinn.com> wrote: > On 14-07-24 02:49 PM, Robert Cummings wrote: > >> On 14-07-24 12:18 PM, Negin Nickparsa wrote: >> >>> I have a string which always has "C" then a number which it's length can >>> change anytime and then "P" and then a space and then a word >>> >>> like: >>> >>> echo "C60P1 Unit"; >>> >> >> This doesn't match your description... there's a number after the 'P' >> :) >> >> is it anyway to split the string by type? >>> >>> from the manual I did this: >>> >>> function multiexplode ($delimiters,$string) { >>> $ary = explode($delimiters[0],$string); >>> array_shift($delimiters); >>> if($delimiters != NULL) { >>> foreach($ary as $key => $val) { >>> $ary[$key] = multiexplode($delimiters, $val); >>> } >>> } >>> return $ary; >>> } >>> echo "C60P1 Unit"; >>> $str="C60P1 Unit"; >>> $delimiters = Array("C","P"," "); >>> $res = multiexplode($delimiters,$str); >>> echo '<pre>'; >>> print_r($res); >>> echo '</pre>'; >>> >>> but it seems to me it is so complex for such a small string >>> does anything for type exist which I don't know about to for example just >>> grab the numbers?because I just care about the numbers here 60 and 1 >>> seperately >>> >> >> <?php >> >> $str = 'C60P1 Unit'; >> $num = preg_replace( '#^[^[:digit:]]+([[:digit:]]+).*$#', '\1', $str ); >> > ​@Robert wow it is complex version of cool :D thanks by the way​ > >> ?> >> > > Sorry, I missed that you want the 60 and the 1... I think others have done > similarly but just to be different here's another take: > > > <?php > > $str = 'C60P1 Unit'; > > list( $num1, $num2 ) = > explode( ':', preg_replace( '#^[^[:digit:]]+([[:digit:]]+) > [^[:digit:]]+([[:digit:]]+).*$#', '\1:\2', $str ) ); > > echo $num1."\n"; > echo $num2."\n"; > > > ?> > > Cheers, > Rob. > -- > Phone: 613-822-9060 +++ Cell: 613-600-2836 > E-Mail Disclaimer: Information contained in this message and any > attached documents is considered confidential and legally protected. > This message is intended solely for the addressee(s). Disclosure, > copying, and distribution are prohibited unless authorized. >

« previous php.general (#323661) next »