foreach문 문의 드립니다~

foreach문 문의 드립니다~

QA

foreach문 문의 드립니다~

본문

안녕하세요?

알림톡 관련된 작업중입니다.

보낼 문장을 불러온 후에 #{치환} 이런 형태의 문장만 추출하고 싶습니다.

예를들어 아래와 같은 보낼 문자가 있다면...

【교육/행사명】 : #{교육명}
【교육(행사)일시】 : #{행사일}
【참가비용】 : #{비용}
【참가방법】 : 홈페이지 참조
【장소】 : #{장소}

빨강색으로 표시한 내용만 추출해서 다른 문장으로 교체하려고 합니다.

#{ } 안의 내용을 추출하는 것입니다.

이런 경우 어떤식으로 추출해야 하나요?

초보라자 아무 시작도 못하고 있습니다.

도움 부탁드립니다~

이 질문에 댓글 쓰기 :

답변 4

지금과 같은 경우에는 foreach 를 잘 사용하지 않는 편입니다.

str_replace() 로 간편하게 적용할 수 방법이 있습니다.

ex.


$content = "【교육/행사명】 : #{교육명}
【교육(행사)일시】 : #{행사일}
【참가비용】 : #{비용}
【참가방법】 : 홈페이지 참조
【장소】 : #{장소}
";
$arr_s = array('#{교육명}', '#{행사일}', '#{비용}', '#{장소}');
$arr_r = array($wr_1, $wr_2, $wr_3, $wr_4);
$str = str_replace($arr_s, $arr_r, $content);
echo $str;

str_replace()  함수에서,

#{교육명} 을 추출하여 $wr_1 텍스트로 교체합니다.
#{행사일} 을 추출하여 $wr_2 텍스트로 교체합니다.
....

추출 및 교체까지 한번에 처리하는 방법입니다.

예를들어 변수값 $aaa 에배열로 들어왔을때

 

foreach($aaa as $value){

   $content = 【교육/행사명】 : $value[aa] -- 데이터값
    【교육(행사)일시】 :$value[bb] -- 데이터값
   【참가비용】 : $value[cc] -- 데이터값
   【참가방법】 : 홈페이지 참조
   【장소】 : $value[dd] -- 데이터값

 

  여기서 $content를 가지고 보내면 될거같은디요

 

답변 감사합니다. 혹시 아래와 같이 추출하려면 어떻게 해야 하나요?
그러니까 #{} 괄호의 형식으로 된것만 표시하는 것입니다.

#{교육명}
#{행사일}
#{비용}
#{장소}


<?php
// foreach는 왜 언급했는지 모르겠군요. 그냥 내용에서 원하는 형태로 구성된 문자열을 뽑을 수 있습니다.
$html = '【교육/행사명】 : #{교육명}
【교육(행사)일시】 : #{행사일}
【참가비용】 : #{비용}
【참가방법】 : 홈페이지 참조
【장소】 : #{장소}';
preg_match_all('/#\{.+?\}/', $html, $matches);
print_r($matches[0]);
/*
Array
(
    [0] => #{교육명}
    [1] => #{행사일}
    [2] => #{비용}
    [3] => #{장소}
)
*/
 
// 어차피, 지정된 키워드 치환이니 굳이 뽑아낼 필요가 없습니다.
// 반복문 내에서 지정 키워드 치환은 아래처럼 하면 됩니다.
$html = '질문의 기본 내용'; // 파일에서 읽어오든, DB에서 읽어오든 기본 내용
$replace = [ // 사용되는 키워드 나열
    '#{교육명}' => '',
    '#{행사일}' => '',
    '#{비용}' => '',
    '#{장소}' => '',
    '#{키워드1}' => '',
    '#{키워드2}' => '',
    '#{키워드3}' => '',
    '#{키워드4}' => '',
];
foreach ( $list as $i=>$row ) {
    $change = $replace; // 초기화(기본값 준비)
    $change['#{교육명}'] = $row['subject']; // #{교육명} → 제목으로 치환용
    $change['#{행사일}'] = $row['wr_1'];
    // 등등 치환이 필요한 값들 할당
    $content = strtr($html, $change); // 지정된 키워드 치환, 그 외 대상이 있는데 할당된 값 없으면 제거
    // 출력이나 메일 발송 등
}
답변을 작성하시기 전에 로그인 해주세요.
전체 59,589
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT