2016-06-17 4 views
-2

하나의 부품을 공통으로 사용하여 여러 개의 분리 된 긴 텍스트 문자열에 값을 보관하려고합니다. 텍스트 문자열 중 하나특정 문자 사이의 숫자 만 유지하십시오.

N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen 

공통 부분은 "크립톤 (Kr) 204.500"내가 번호 만 필요하므로 나중에 계산에 사용할 수 있습니다. 그런

+0

"Kr 204.500"이 모든 행에 표시되고 다른 곳에서 다른 번호를 캡처하고 싶습니까? 아니면 "Kr"에 원하는 번호가 항상 ","가 올까요? –

+0

204.500 번호 만 유지 하시겠습니까? 잡으려는 번호는 항상 Kr에 의해 시작됩니까? 그리고 결과를 204.500과 같이 구분하고 싶습니까? – keupsonite

+0

이 문자열에 대해 일관성이있는 것은 무엇입니까? 어쩌면 우주에서 폭발 할 때 22 지수를 끌어낼 수 있을까요? – chris85

답변

0

숫자/점을 얻으려면

Kr\h* # Kr as string, followed by spaces or tabs 
([.\d]+) # capture numbers like 123, 12.5 into the first group 

a demo on regex101.com를 참조하십시오 Kr, 다음과 같은 표현을 사용할 수 있습니다.


PHP에서 :

<?php 
$string = 'N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen'; 

$regex = '~ 
      Kr\h* # Kr as string, followed by spaces or tabs 
      ([.\d]+) # capture numbers like 123, 12.5 into the first group 
      ~x'; 

preg_match_all($regex, $string, $matches); 
print_r($matches); 
?> 

a demo on ideone.com를 참조하십시오.

+0

이것은'$ matches' 변수를 초기화하지 않는 것이 좋습니다. – keupsonite

+0

출력을 배열로 얻었 으면 점없이 숫자 값으로 가져올 수 있습니까? – lobirkeland

+0

@lobirkeland 내 마지막 솔루션은'$ number' 변수에 숫자를 알려줍니다. – keupsonite

1

시도 뭔가 : 당신이 배열에 번호를 구분하려면

$results = array(); 

preg_match(
    "/Kr (\d*.?\d*)/", 
    "N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen", 
    $results 
); 

// output: array(
//  0 => Kr 204.500 
//  1 => 204.500 
//) 

그런 다음, 해당 작업을 수행해야합니다

if (isset($results[1])) { 
    $numbers = preg_split("/\./", $results[1]); 

    // output = array(
    //  0 => 204 
    //  1 => 500 
    //) 
} 

편집 피드백 후

$results = array(); 

preg_match(
    "/Kr (\d*.?\d*)/", 
    "N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen", 
    $results 
); 

$number = isset($results[1]) ? preg_replace("/\./", "", $results[1]) : null; 

// output: 204500 
+0

실례지만 지식 수준이 낮지 만 다음 출력을 얻습니다. Array 그리고 다른 방법으로 출력을 숫자 값으로 가져올 수 있습니까? – lobirkeland

+0

@lobirkeland 하나 또는 두 개의 값이 필요합니까? 좀 더 도움이 필요합니다. – keupsonite

+0

두 값을 하나로 (204500) – lobirkeland

-1

은 .. 내가 어쩌면 나 자신을 해결 한 도움을

$var = strstr($var, 'Kr. '); 
$var = substr($var, 0, strpos($var, ", ")); 
$var = str_replace("Kr. ","",$var); 
$var = str_replace(".","",$var); 

감사를 생각! 개선을위한 제안?

+0

축하해! 그러나 이것은 실제로 그렇게하는 좋은 방법은 아닙니다 ... @Jan과 나 자신이 당신에게 가장 좋은 해결책을 제안했습니다. – keupsonite

관련 문제