게시판 본문에 중복된 단어가 있을경우 하나만 출력할 수 있을까요?
본문
게시판에 누군가 글을 작성 합니다.
글내용 :
1234567890
1234567890
1234567890
1234567
1234
123
123456
-------------
위 글에서 1234567890 이 동일하게
세번 들어갔는데 동일한 글자일 경우
1234567890 이 본문에 한번만 출력되게 할 수 있을까요?
답변 4
질문이 참 불분명해서 아무 글자나 중복되는 걸 다 지운다면....
사랑합니다. 고맙습니다. 아침입니다. 의 "다"를 모두 지울텐데요?
삭제되는 중복문자열의 "패턴"을 제시해 주셔야 코드에 대한 가닥이 나옵니다.
더 디테일하게 코드를 짠다면 영어인 경우 동일 문자열인 a를 다 지워버리는 형태도 나올 수 있거든요.
$str = "1234567890
1234567890
1234567890
1234567
1234
123
123456";
$r = implode(PHP_EOL, array_unique(explode(PHP_EOL, $str)));
echo $r;
본문 내용이 구체적이지 않아서 확실한 코드를 얄려드릴 수는 없겠으나 정규식 사용이 가능 한다면
다음과 같은 절차로 가능 합니다
1. 정규식으로 url을 모두 추출
2. 동일한 url 갯수 카운트
3. array_unique로 1번의 배열 정리
4. 3번 배열을 loop 하면서 본문에서 첫번째 것만 남기고 나머지는 공백처리
이 부분이 1에서 구한 url형태에 따른 여러가지 상황을 고려해야할 것 같아보입니다
예를들어
http://abc.com/bbs/board.php?bo_table=free&page=1
http://abc.com/bbs/board.php?bo_table=free&page=10
이런 형태가 나온다면 치환에 곤란한 문제가 생깁니다
str_replace 나 preg_replace로 간단히 처리될 문제는 아닙니다
또 문제가 있습니다.
가령
<a href="url">url</a> 이럴 경우 링크안의 innerText 가 사라지면서 링크가 무력화되겠죠.
정확히 유튜브주소면 유튜브주소, mp3 경로면 mp3 경로같이 타겟을 명확히 지정해 주셔야지
막연히 url 이라고 한다면 어떻게 코드를 짜더라도 문제가 생길 수 밖에 없어요.