2016-11-11 3 views
0

다음과 같은 문제로 몇 시간 동안 멈추었습니다. 나는 나의 자신의 CMS를 가지고 있는데, 짧은 코드 [plugin-pluginname]을 사용하여 플러그인을 활성화한다. 이제는 해당 단축 코드 내에 그룹을 지정합니다.이 그룹은 나중에 해당 ID를 선택하는 쿼리의 변수로 포함 된 파일에서 사용됩니다. 순간에 preg_split을 사용하여 정규 표현식으로 다른 값 가져 오기

, 나는 다음과 같은 코드를 가지고 :

$regex = '~\[plugin-([^]]+)]~'; 
     $content_one = htmlspecialchars_decode($page['content_one']); 
     $parts = preg_split($regex, $content_one, -1, PREG_SPLIT_DELIM_CAPTURE); 

     foreach($parts as $k => $v){ 
      if($k & 1) 
       include_once('plugins/'.$v.'/'.$v.'.php'); 
      else 
       echo htmlspecialchars_decode($v); 
     } 

가 (예를 들어 testplugin) [plugin-testplugin]하고 특정 파일 것을 포함이 검사. 지금 나는이 같은 코드를 쓰고 싶습니다 [plugin-testplugin 2] 위의 코드는 물론 작동하지만 숫자가 변수에 저장되어 있습니다. SELECT * FROM 'database' WHERE 'group' = "'.$var_from_shortcode.'"

이 문제를 해결하고 해결하는 데 도움이되는 모든 도움말 및 답변 문제는 환영합니다!

+0

이 경우'preg_split' 대신'preg_replace_callback'을 사용하십시오. –

+0

preg_replace_callback이 답이 될지 모르지만 그 자습서는 다소 어렵습니다. 확실하지 않은 나는 나가고있다. 그러나 나는 그것을 지금 시험해 볼 예정이다! – Saypontigohe

+0

당신이 생각하는 것만 큼 어렵지 않습니다. 이전에 한 두 가지 간단한 테스트를 시도하십시오. –

답변

0

this regex을 사용하여 그룹 1 값을 변수에 저장할 수 있습니까?

\[plugin-[A-Za-z ]*(\d+)?\] 

또는 [plugin-testplugin 2]은 다음의 수를 찾을 \d*를 사용 찾으려면이 정규식을 사용합니까?

+0

foreach 루프를 멈추지 않고 단일 변수에서 숫자 만 얻으려면 어떻게해야합니까? 루프를 멈추거나 변수를 저장하지 않습니다. – Saypontigohe

+0

변수를 읽은 위치와 동일한 범위에서 변수를 선언 했습니까? foreach 루프 외부에서 읽으려는 경우 변수가 선언되지 않아서 파손되지 않도록해야한다고 생각합니다. –

+0

각 루프에는'[shortcode]'가 둘 이상있을 수 있습니다. 따라서 루프를 모두 풀어 줘야합니다. – Saypontigohe