질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

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);

 

는 작동하지 않습니다.

 

혹시 원인에 대한 힌트를 주실 수 있으실까요? ㅠㅠ 세시간동안 헤매고 있는데 도저히 해결이 되지 않네요...

  • profile
    혹시 $content = preg_replace("/$val/u", "변환되었어요", $content); 이렇게는 안될까요...
  • profile profile
    네 ㅠㅠ 저도 그렇게 생각을 했는데 계속 안되더라구요..

    php 에서 문자열이랑 변수는 구분해야하니까 "/".$val."/u" 도 해보고
    "/{$val}/u" 도 해보고 하는데도 안되네요..

    php를 기초부터 배우지 않으니까 문제가 발생할때 자료형 문제인지, 배열 문제인지 파악이 어렵네요 하하..
  • profile profile
    해결했습니다..^^ 웹지기님의 댓글에서 힌트를얻었습니다
    감사합니다!
  • profile profile
    "" 붙이는곳에서는 {} 를 굳이 쓸 이유 없지요. PHPStorm에서 ""사이에 변수 앞뒤로 불필요하게 중갈호가 있는 경우 비우라고 합니다.

    그리고 "" 쓸때는 복잡하게 . 붙여가면서 스트링을 끝맺고 추가하고 이런작업이 불필요합니다 :)
  • profile profile
    감사합니다!!
  • profile

    정규식에 임의의 변수를 넣으면 안됩니다. "라이믹스"처럼 한글이나 영어만 있는 경우는 상관없겠지만, 괄호나 슬래시 등 특수문자가 들어가는 순간 정규식 문법으로 해석되어서 난리납니다.

     

    단순한 치환이라면 str_replace나 strtr 함수를 사용하세요. 아니면 정규식 문법으로 오인할 수 있는 특수문자를 escape 처리해 주는 preg_quote 함수를 활용하시고요.

  • profile profile
    넵 그렇게 하겠습니다 감사합니다 ㅎㅎ