문자열 찾고 수정하기

문자열 찾고 수정하기

QA

문자열 찾고 수정하기

본문

$tmp = '


-- 1/7회 출력
Trigger {
    players = {P7},
    conditions = {
    Deaths(P12, AtLeast, 1, 3);
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Deaths(P10, AtLeast, 1, 9);
    },
    actions = {
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P10, SetTo, 0, 9); -- 랜덤 타이머 초기화
    SetDeaths(Force1, SetTo, 1, 181);  -- 사운드 유닛
    SetScore(Force1, Add, 30000, Kills);
    SetResources(Force1, Add, 1, Gas);
    Wait(25);
    CreateUnit(1, "Terran Valkyrie", "[G] H5", P1); -- 유닛 생성
    SetDeaths(Force1, SetTo, 0, 181);  -- 사운드 유닛
    }
}
-- 2/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Infested Duran", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 1, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 68, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 100,
    shield = 100,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 3/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Unclean One (Defiler)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 1, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 119, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 25,
    shield = 25,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 4/7회 출력
local BdS2 = CSMakeStar(5, 108, 96, 0, 31, 1);
CSPlotOrderWithProperties(BdS2, P7, "Protoss Scout", "[G] H5", nil, 1, 16, CS_Shuffle(BdS2), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 1, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 170, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 25,
    shield = 25,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 5/7회 출력
local BdS2 = CSMakeStar(5, 108, 96, 0, 31, 1);
CSPlotOrderWithProperties(BdS2, P7, "Kukulza (Mutalisk)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS2), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 1, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 221, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 100,
    shield = 100,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 6/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Fenix (Zealot)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 2, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 272, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
}, 0, {
    hitpoint = 25,
    shield = 25,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
-- 7/7회 출력
local BdS1 = CSMakePolygon(4, 64, 45, 31, 1);
CSPlotOrderWithProperties(BdS1, P7, "Tassadar (Templar)", "[G] H5", nil, 1, 16, CS_Shuffle(BdS1), nil, Patrol, "[B] Come", nil, 16, nil, P7, {
    Deaths(P12, AtLeast, 1, 3);
    Deaths(P12, AtLeast, 3, 10); -- 난이도
    Bring(P8, Exactly, 0, "Zerg Hatchery", "[G] H5");
    Bring(P1, AtLeast, 1, "Terran Valkyrie", "[G] H5");
    Deaths(P10, AtLeast, 323, 9); -- 타이머
}, {
    Comment("    ");
    CreateUnit(1, "Protoss Observer", "[G] H5", P7);
    KillUnitAt(0, "Protoss Observer", "[G] H5", P7);
    SetDeaths(P12, SetTo, 1, 35); -- 라바제거
    RemoveUnitAt(0, "Terran Valkyrie", "[G] H5", P1);
}, 0, {
    hitpoint = 25,
    shield = 25,
    hanger = 10
});
---------------------------------------------------------------------------------------------------
';

이런 문구가 있는데.
Deaths(P10, AtLeast,  << -- 전영역 타이머 부분에 값을 가져오고 -1을 하여 전부다 이어 붙히고 싶습니다.ㅠ

어떻게 해야될까요..?

이 질문에 댓글 쓰기 :

답변 3

Deaths(P10, AtLeast, 1, 9)
↓ 고정 문자열에서 Escape 처리, 변경되는 부분 패턴, 괄호 묶기

Deaths\(P10, AtLeast, (\d+), 9\)

이제 이 부분값에서 1 빼서 치환해주면 끝이죠.


$tmp = preg_replace_callback('/Deaths\(P10, AtLeast, (\d+), 9\)/', function ($m) {
    return 'Deaths(P10, AtLeast, '.($m[1]-1).', 9)';
}, $tmp);
// 익명 함수 사용할 수 없는 옛날 버전이면 아래처럼 따로 처리하면 됩니다.
function change_value($m) {
    return 'Deaths(P10, AtLeast, '.($m[1]-1).', 9)';
}
$tmp = preg_replace_callback('/Deaths\(P10, AtLeast, (\d+), 9\)/', 'change_value', $tmp);

이건 무슨 언어에요 ㅋㅋㅋ 본적 없는데

답변을 작성하시기 전에 로그인 해주세요.
전체 39
QA 내용 검색

회원로그인

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