PHP 함수에 대한 질문드려요 ㅠ_ㅠ 너무 어렵네요...
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.4 |
PHP를 통해서 특정 TXT파일의 줄바꿈 단위마다 배열의 한 요소에 집어넣도록 했습니다!
$array = explode("\n", file_get_contents('텍스트 파일 경로'));
그리고
foreach($array as $val)
{
$content = preg_replace("/".$val."/u", "변환되었어요", $content);
}
코드를 통해서 게시글 컨텐츠의 내용중 매치되는 단어가 있으면 "변환되었어요" 라고 바꾸도록 코드를 작성하였는데요
이상하게 작동이 안되더라구요.. ㅠㅠ
$val 값중에 분명이 '라이믹스' 라는 값도 있고 $array배열을 print_r로 찍어보면 잘 들어가 있는데도
$content = preg_replace("/라이믹스/u", "변환되었어요", $content);
는 작동하는데
$content = preg_replace("/".$val."/u", "변환되었어요", $content);
는 작동하지 않습니다.
혹시 원인에 대한 힌트를 주실 수 있으실까요? ㅠㅠ 세시간동안 헤매고 있는데 도저히 해결이 되지 않네요...
댓글 7
php 에서 문자열이랑 변수는 구분해야하니까 "/".$val."/u" 도 해보고
"/{$val}/u" 도 해보고 하는데도 안되네요..
php를 기초부터 배우지 않으니까 문제가 발생할때 자료형 문제인지, 배열 문제인지 파악이 어렵네요 하하..
감사합니다!
그리고 "" 쓸때는 복잡하게 . 붙여가면서 스트링을 끝맺고 추가하고 이런작업이 불필요합니다 :)
정규식에 임의의 변수를 넣으면 안됩니다. "라이믹스"처럼 한글이나 영어만 있는 경우는 상관없겠지만, 괄호나 슬래시 등 특수문자가 들어가는 순간 정규식 문법으로 해석되어서 난리납니다.
단순한 치환이라면 str_replace나 strtr 함수를 사용하세요. 아니면 정규식 문법으로 오인할 수 있는 특수문자를 escape 처리해 주는 preg_quote 함수를 활용하시고요.