2012-11-11 4 views
0

좋아, 내가이를 찾으려면 좋지 않을까 문자열의 값.PHP 정규식 찾기 값은

만약 내가 "10"를 반환하는 함수를 싶습니다

$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem ipsum"; 

예. 그것은 배열에 저장되어있는 경우 그것은 loverly 것입니다 그리고 그 중 다수가 배열에 원하는 경우 함수는 그 중 많은 검색 할 수 있습니다.

$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem ipsum [get_this_value=9] etc etc"; 

는 (10 구) 배열을 반환 등등 ...

+0

나는 정규식으로 당신과 같은 배에 있지만, 나는이 시리즈를보기 시작한 덕분에 더 좋아지고있다 : http://blog.themeforest.net/screencasts/regular-expressions-for-dummies/ 원한다. 기사, 이들은 비디오이지만 아주 기초부터 시작하여 일을합니다. –

+0

감사합니다. :) 제가 확인하겠습니다! – gubbfett

+0

RegEx 온라인을위한 최고의 출처는 [http://www.regexbuddy.com/regex.html] (http://www.regexbuddy.com/regex.html)입니다. 귀하가 감당할 수 있다면 ($ 30) RegExBuddy는 모든 페니 가치가 있습니다 매우 짧은 기간에 생산성을 향상시킬 것입니다. –

답변

2

먼저 당신이 정규 표현식에 대해 배워야한다. 나는 this tutorial을 강력히 추천 할 수있다.

다음 PHP 특정 정규식 문제를 PHP's documentation에서 읽을 수 있습니다.

preg_match_all("/\[[^\]=]*=(\d+)\]/", $string, $matches); 

지금 $matches[1]가 원하는 배열이됩니다

는 얻을 수 있지만,이 문서가 문제를 해결하는 것 시작했다. 이 값은 특정 문자열 get_this_value에 의존하지 않습니다.

실제로 링크 된 페이지를 통해 정규 표현식을 가르쳐주기 위해이 정규식을 자세히 설명하지 않고 대신 사용한 개념을 설명합니다. 이스케이프 처리되지 않은 대괄호 [...]문자 클래스입니다. 이 경우 (^으로 인해) 은 부정 된입니다. \d문자 클래스입니다. +반복 수량 한정자입니다. 그리고 괄호 (...)캡쳐 그룹으로 표시됩니다.

1
<?php 
$string = "blah blah blha lorem ipsum [get_this_value=10] more lorem [get_this_value=13] ipsum"; 

preg_match_all("~\[get_this_value=(\d+)\]~i", $string, $matches); 
print_r($matches); 
/* 

Array 
(
    [0] => Array 
     (
      [0] => [get_this_value=10] 
      [1] => [get_this_value=13] 
     ) 

    [1] => Array 
     (
      [0] => 10 
      [1] => 13 
     ) 

) 
*/ 
+0

왜'='를 벗어 났습니까? – alex

+0

그것은 해를 끼치 지 않는다;). 그러나 그것을 지적 해 주셔서 감사합니다, 나는 그것을 제거했습니다. –