Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- String string = "param1 param2 'param3 param3 param3' param4 ' param5 param5 param5 param5' param6 param7 'param8' 'param9'";
- Matcher matcher = Pattern.compile("((?<=')([^']*)(?='(\\s|$)+)|(?<=\\s|^)[^\\s']*(?=\\s|$))").matcher(string);
- while (matcher.find()) System.out.println(matcher.group());
- =======================================================================================================================================
- <?php
- $result=array();
- $string="param1 param2 'param3 param3 param3' param4 ' param5 param5 param5 param5' param6 param7 'param8' 'param9' param99par";
- var_dump(parseParams($string));
- function parseParams($string){
- if(substr_count($string, "'") % 2!=0)trigger_error("String malformed", E_USER_ERROR);
- $all = explode(' ', $string);
- $curridx = 0; $i=-1; $into = false; $beforeInto=false;
- foreach($all as $item){
- if(substr($item,0,1)=="'"){
- $into=true;
- $curridx = $i+1;
- $result[$i+1] = '';
- }
- if(substr($item, strlen($item)-1,1)=="'") {
- $into=false;
- $beforeInto=true;
- }
- $rf = trim($item, "'");
- if(substr($rf, strlen($rf)-1,1)=="'")$rf=substr($rf,strlen($rf)-1);
- if(!$into && !$beforeInto){
- $result[] = $rf;
- }elseif($into || $beforeInto){
- $beforeInto=false;
- if(substr($rf,0,1)==" ")
- $result[$curridx] .= $rf;
- else
- $result[$curridx] .= (strlen($result[$curridx])==0?'':' ') . $rf;
- }
- $i++;
- }
- return $result;
- }
Add Comment
Please, Sign In to add comment