2016-09-04 1 views
1
$str1 = '10 sold'; 

$re = "/(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)/";  
preg_match_all($re, $str1, $str1matches); 

echo print_r($str1matches,1); 

인쇄 :정규식 일치하는 위치

Array 

(
    [0] => Array 
     (
      [0] => 10 
      [1] => 
      [2] => sold 
      [3] => 
     ) 

    [Alpha] => Array 
     (
      [0] => 
      [1] => 
      [2] => sold 
      [3] => 
     ) 

    [1] => Array 
     (
      [0] => 
      [1] => 
      [2] => sold 
      [3] => 
     ) 

    [Numeric] => Array 
     (
      [0] => 10 
      [1] => 
      [2] => 
      [3] => 
     ) 

    [2] => Array 
     (
      [0] => 10 
      [1] => 
      [2] => 
      [3] => 
     ) 

) 

그러나 왜 그런 긴 배열을 인쇄 않으며, 어떻게 내가있는 위치 것입니다 내 값 (xxxlabel)에서 항상 사용할 수 결정합니까?

+0

* 왜 이렇게 긴 배열을 인쇄합니까? 빈 일치 또는 하위 배열을 의미합니까? – Rizier123

+0

@ Rizier123 비어있는 일치 – 3zzy

+0

당신은 내 위치 (xxx 및 레이블)를 항상 사용할 수있는 위치를 정교 할 수 있습니까? *? – RomanPerekhrest

답변

1

나는 다음 번호 입력 문자열에서 단어가 you confirm 때문에 간단한 /^([0-9]+)\s*([a-zA-Z]+)$/ 정규식을 사용하십시오 :

$str1 = '10 sold'; 
$re = "/^([0-9]+)\s*([a-zA-Z]+)$/";  
preg_match($re, $str1, $str1matches, PREG_OFFSET_CAPTURE); 
echo print_r($str1matches[1]); 
echo print_r($str1matches[2]); 

$str1matches[1]이 포함됩니다 :

preg_match('/^([0-9]+)\s*([a-zA-Z]+)$/', '10 sold', $str1matches, PREG_OFFSET_CAPTURE); 

이 (가) PHP demo보기 배열에 그룹 1 (숫자) 값과 위치가 있고 $str1matches[2]에 그룹 2 (단어) 값과 위치가있는 배열이 포함됩니다.