2012-11-30 2 views
0

나는 통화 기호로 숫자 만 포착하거나 pref_match_all 패턴을 사용하여 기호가없는 경우 숫자 만 사용합니다. 그러나 심볼을 포함하지 않는 $ 심볼 이외에는 아무것도 실패하지 않습니다. 여기 Preg_match_all 실패

내가 노력하고있어입니다 :

include 'simple_html_dom.php'; 

$html = file_get_html($url); 

// Find price if added our code 
$ret = $html->find('.price'); 

$pattern = '/\p{Sc}\s*\d{1,3}(?:,\d{3})*(?:\.\d+)?/u'; 

simple_html_dom에 의해 그들이 작동 또는 실패 여부를 리턴 될 수 무엇의 예입니다 - 그것은 다음과 같은

$ret[0] = '<span class="price">100</span>'; // this returns null 

$ret[0] = '<span class="price">£100</span>'; // this returns null 

$ret[0] = '<span class="price">€100</span>'; // this returns null 

$ret[0] = '<span class="price">$100</span>'; // this works correctly and returns $100 

preg_match_all($pattern, $ret[0], $matches); 

echo $matches[0][0]; 

의 하나가 될 수 어떤 아이디어?

+1

사용 파서 ... 왜 나중에 HTML을 구문 분석하기 위해 정규 표현식을 사용합니까? –

답변

0

코드에서 배열에 문자열을 넣지 않고 $ret var을 바꾸고 있으므로 정규식 일치는 마지막 문자열에서만 수행됩니다. 게시 한 코드가 코드라면 $ret을 배열로 만들고 문자열을 추가해야합니다. Here 모든 것이 정규식의 관점에서 잘 작동하는 것처럼 보입니다!

편집 :
내가 지금 볼 수있는 문제는 당신이 $ret[0]에 모든 것을 추가하는 것입니다 , 당신이 $ret[0]에 등등, 첫 $ret[1] 두 번째와를 추가해야합니다, 또는 당신은 DOM을 사용하는 것으로 나타 $ret[]=

+0

실제 코드로 질문을 업데이트했습니다. –

+0

이것이 실제 코드 인 경우 업데이트 된 답변을 확인하십시오. 대신 배열을 올바르게 관리하고 있다면 잘 모르겠습니다. – Gabber

+0

코드가 추가되었습니다. –