"오늘 밤 200,000 달러를 이길 수 있습니다. 지금 가입하십시오!"와 같은 문자열이 있습니다.PHP를 사용하여 다른 문자열에서 특정 문자열을 가져 오는 방법은 무엇입니까?
상금은 문자열에서 문자열로 바뀌므로 어떻게 든 PHP 정규식을 사용하거나 그렇게해야합니다.
PHP를 사용하여이 문자열에서이 값을 가져 오는 방법은 무엇입니까?
간단한 정규식 함수가 있습니까?
미리 감사드립니다. 당신은 preg_match
찾고있는
"오늘 밤 200,000 달러를 이길 수 있습니다. 지금 가입하십시오!"와 같은 문자열이 있습니다.PHP를 사용하여 다른 문자열에서 특정 문자열을 가져 오는 방법은 무엇입니까?
상금은 문자열에서 문자열로 바뀌므로 어떻게 든 PHP 정규식을 사용하거나 그렇게해야합니다.
PHP를 사용하여이 문자열에서이 값을 가져 오는 방법은 무엇입니까?
간단한 정규식 함수가 있습니까?
미리 감사드립니다. 당신은 preg_match
찾고있는
, 나는 생각 :
preg_match("/\$[\d\,]+/", "You can win tonight $200,000. Sign up now!", $matches);
# $matches[0] will be "$200.000"
하면 무너 뜨 :
일반 표현식에서 특별한 의미를 갖는 달러 기호 (대한 정규 표현식의 모습, 그래서 우리는 백 슬래시로 이스케이프 , 그래서 리터럴 달러 기호로 찍은), 하나 이상의 숫자 (0-9)와 쉼표가 뒤에. preg_match
자체가 false를 반환하는 경우
주, 그것은 문자열이 정규 표현식과 일치하지 있기 때문에, 그 경우, 더 $match[0]
읽을 없을 것
이 일을 내가 볼 수있는 방법은 두 가지가 있습니다, 정규식 (느리게) 또는 폭발 (더 빠르지 만 정확하지는 않음)을 사용할 수 있습니다. 이점은 문자열에서 공백을 제거하면 RegEx가 계속 작동하지만 폭발이 갑자기 중단 될 수 있다는 것입니다. 정규 표현식과 http://www.php.net/manual/en/book.pcre.php에서와주의 할 http://www.regular-expressions.info/tutorial.html
한 가지에서 정규 표현식 정보 사이트의 PHP PCRE 페이지에 자신의 사용에 대한
$src = "You can win tonight $200,000. Sign up now!";
function get_amount($from){
$src_tkns = explode(' ', $from);
foreach($src_tkns as $tkn){
if(substr($tkn, 0, 1)==='$'){
return (substr($tkn, -1, 1)=='.')?substr($tkn, 0, -1):$tkn;
}
}
return false;
}
function get_amount_regex($from){
$r = '/\$[-+]?[0-9]*(\,?[0-9]+)+/';
preg_match_all($r, $from, $res);
return is_array($res)?$res[0][0]:false;
}
print('Found: '.get_amount($src).'<br />');
print('Regex Found: '.get_amount_regex($src));
더는 위의 코드는 최적이 아닌 또는 모든 경우에 잡기 오류가 발생합니다. 일부 중요 작업에 사용하기 전에 알려진 유효 문자열과 유효하지 않은 문자열로 테스트를 수행해야합니다.
수행해야 할 작업은 무엇입니까? 화폐 가치를 얻으시겠습니까? –