리스트 형태로 표시하기 위해서 ul ol 등의 태그를 사용하는데
처음에는 이런 리스트 형태를 잘 사용하지 않았지만 점점 리스트 형태로 숫자나 점으로 표시되는 것을 많이 사용하게 되었다.
그런데 들여쓰기에서 문제다
<li> 내용내용내용내용내용…. <br /></li> 이런식으로 처리가 되는데 <br /> 태그만 바꿔주면 될 듯 해보였는데
그래서 정규식과 스트링 변환을 통해서 처리할려고 했으나
한 칸으로 내려진 것들까지 모두 바꿔버리게 되어서 이 부분을 고쳐보겠다고 하루종일 만지작 거렸다.
하면서 든 생각은 정말 어려운 문제가 아닌것 같은데 이런것도 못 고치는데 뭘 할 수 있겠나? 부터 시작해서 신세한탄이 시작되었다 ㅠ
ROS2 cpp로 미니 프로젝트하면서 꽤 성장했다고 생각했는데
거기에다 블로그도 다시 서버에 다시 배포하면서 좀 늘었나? 하고 잠깐 우쭐 했나보다
잠깐 쉰다음에 다시 문제를 해결하기 위해서 마음을 다잡고(?) 다시 집중해서 했다.
https://regexr.com/ 사이트에서는 정규식을 마음껏 테스트 할 수 있게 제공하는데 여기에서
일단 regular expression을 다시 확실히 적용하기 위해서 연습을 하고
Li 태그만 추려내서 그 안에서만 변경이 가능하도록 하고
원래 전체 문자열에서 그 바뀐 부분들과 다른 기존의 문자열들까지 다 나올 수 있게 변경을 했다.
결과는 다행히 잘 된 거 같다.
코드는 대략 아래와 같은식으로 구현을 했는데
```
$regResult = preg_match_all("/(<li>[\w가-힣?,.\/?;:'\[\]{}|`~!@#%&\*\(\)\-\=\+<br \/>]*)/", $replacedMd, $matches, PREG_OFFSET_CAPTURE);
이런식으로 정규식으로 찾아낸 다음에
foreach ($matches[0] as $match) {
$strReplacePositions[] = array(
"strOrigin" => $match[0], //원래 str
"strReplaced" => $brReplacedToP[0] // 변환된 str
);
기존의 전체 문자열에서 다시 위에서 찾은 것만 바꿀 수 있게 변환
foreach($strReplacePositions as $strReplacePosition) {
$replacedMd = str_replace($strReplacePosition["strOrigin"], $strReplacePosition["strReplaced"], $replacedMd);
}
```
이렇게 나오는 것을