변수에 명사를 담아서 문장을 구성할 때 명사 뒤에 붙는 ‘은는이가을를’을 맞추기 귀찮아서 늘 이런 식으로 사용했다.

이 기사를 읽기 전에 다음 연결 기사를 읽기 바랍니다 : [학교 급식조리원 산재 사망] 안전보다 비용을 중시한 시스템의 “예고된 사고”

원래 요청사항은 아래 같은 형식이었다.

이 기사를 읽기 전에 다음 연결 기사 [학교 급식조리원 산재 사망] 안전보다 비용을 중시한 시스템의 “예고된 사고”를 읽기 바랍니다.

그런데 이런 꼼수로는 아래 경우를 처리할 수가 없다. 아래 글에선 ‘맑시즘2014’가 동적으로 변한다.

맑시즘2014는 정부나 기업의 후원을 일체 받지 않고, 참가자들의 참가비와 진보 사회 단체의 후원만으로 운영합니다. 여러분들의 후원금은 새로운 사상과 다양한 사람들이 함께 모여 생각과 경험을 나누는 진보 포럼 맑시즘2014를 더욱 알차고 풍성하게 그리고 지속적으로 만드는데 커다란 힘이 됩니다.

그런데 이게 맑시즘2016이 되면 ‘맑시즘2016은’이 돼야 한다. 그래서 같이 일하는 친구가 만든 함수를 사용했다. 이 친구는 이런 함수를 블로그에 올리지 않아 내가 올린다. 사용할 때마다 찾기가 귀찮아서 블로그에 갈무리해 두는 거다.

/**
 * 한글 글자가 종성을 갖고 있는지 판단해 주는 함수.
 * @param $chr
 * @return bool
 */
function have_jongsung ($chr) {
    static $no_jongsung = "가갸거겨고교구규그기개걔게계과괘궈궤괴귀긔까꺄꺼껴꼬꾜꾸뀨끄끼깨꺠께꼐꽈꽤꿔꿰꾀뀌끠나냐너녀노뇨누뉴느니내냬네녜놔놰눠눼뇌뉘늬다댜더뎌도됴두듀드디대댸데뎨돠돼둬뒈되뒤듸따땨떠뗘또뚀뚜뜌뜨띠때떄떼뗴똬뙈뚸뛔뙤뛰띄라랴러려로료루류르리래럐레례롸뢔뤄뤠뢰뤼릐마먀머며모묘무뮤므미매먜메몌뫄뫠뭐뭬뫼뮈믜바뱌버벼보뵤부뷰브비배뱨베볘봐봬붜붸뵈뷔븨빠뺘뻐뼈뽀뾰뿌쀼쁘삐빼뺴뻬뼤뽜뽸뿨쀄뾔쀠쁴사샤서셔소쇼수슈스시새섀세셰솨쇄숴쉐쇠쉬싀싸쌰써쎠쏘쑈쑤쓔쓰씨쌔썌쎄쎼쏴쐐쒀쒜쐬쒸씌아야어여오요우유으이애얘에예와왜워웨외위의자쟈저져조죠주쥬즈지재쟤제졔좌좨줘줴죄쥐즤짜쨔쩌쪄쪼쬬쭈쮸쯔찌째쨰쩨쪠쫘쫴쭤쮀쬐쮜쯰차챠처쳐초쵸추츄츠치채챼체쳬촤쵀춰췌최취츼카캬커켜코쿄쿠큐크키캐컈케켸콰쾌쿼퀘쾨퀴킈타탸터텨토툐투튜트티태턔테톄톼퇘퉈퉤퇴튀틔파퍄퍼펴포표푸퓨프피패퍠페폐퐈퐤풔풰푀퓌픠하햐허혀호효후휴흐히해햬헤혜화홰훠훼회휘희2459";
    return mb_strpos($no_jongsung, $chr) === false ? true : false;
}

/**
 * 단어의 종성 여부에 따라 조사를 선택해 주는 함수.
 * syntax) select_marker(단어, 종성이_있는_경우_붙일_조사, 종성이_없는_경우_붙일_조사)
 * ex) select_marker('선생님', '이', '가');
 * ex) select_marker('선생님', '은', '는');
 * @param $word
 * @param $have_jongsung
 * @param $no_jongsung
 * @return string
 */
function select_marker ($word, $have_jongsung, $no_jongsung) {
    $last_chr = mb_substr($word, -1, 1);
    return have_jongsung($last_chr) ?
        $word.$have_jongsung :
        $word.$no_jongsung;
}

사용법은 아래와 같다.

$marxism_title = '맑시즘2013';
echo select_marker($marxism_title, '은', '는') . ' 정부나 기업의 후원을 일체 받지 않고, 참가자들의 참가비와 진보 사회 단체의 후원만으로 운영합니다.';