나는 (이 문맥에서는 중요하지 않은) Joomla 플러그인을 가지고 있는데, 이것은 텍스트의 단락 안에서 숫자가 많은 입력을 받아 일련의 s로 대체하도록 고안되었습니다.preg_replace를 사용하여 값 바꾸기
내 문제는 내 $ article-> text에서 preg_replace를 수행해야하지만, 일치하는 용어에 변경 사항을 적용하는 방법을 모른다. preg_replace_callback을 본 적이 있지만 함수 내에서 호출 할 수있는 방법을 모르겠습니다.
function onPrepareContent(&$article, &$params, $limitstart)
{
global $mainframe;
// define the regular expression
$pattern = "#{lotterynumbers}(.*?){/lotterynumbers}#s";
if(isset($article->text)){
preg_match($pattern, $article->text, $matches);
$numbers = explode("," , $matches[1]);
foreach ($numbers as $number) {
echo "<div class='number'><span>" . $number . "</span></div>";
}
}else{
$article->text = 'No numbers';
}
return true;
}
개정 된 코드 :
function onPrepareContent(&$article, &$params, $limitstart)
{
global $mainframe;
// define the regular expression
$pattern = "#{lotterynumbers}(.*?){/lotterynumbers}#s";
if(isset($article->text)){
preg_match($pattern, $article->text, $matches);
$numbers = explode("," , $matches[1]);
foreach ($numbers as $number) {
$numberlist[] = "<div class='number'><span>" . $number . "</span></div>";
}
$numberlist = implode("", $numberlist);
$article->text = preg_replace($pattern, $numberlist, $article->text);
}else{
$article->text = 'No numbers';
}
return true;
}
작동합니다 내가 당신을 도울 수 있도록 전에 그 기능을 사용했습니다하지만 당신은 나를 설명해야 더 나은 질문 – mck89
죄송합니다. 제가 다시 읽었을 때,이 말이 맞는지 궁금합니다. 나는 그걸 원하는 효과로 다시 작성했지만, 성가신 것처럼 보입니다. 원하는 결과는 다음과 같습니다 1) 각각 3 주위 사업부를 텍스트 2) 숫자 (CSV 추출의 용어 {lotterynumbers}을 찾기) 및 랩) $의 article-로 다시 펌프> 텍스트 나 ' 내 수정 된 코드를 질문에 넣었습니다 – Jeepstone
수정 된 기능이 작동하지 않는 이유는 무엇입니까? 괜찮아 보인다. – mck89