CMS/프레임워크 | XE 1.x |
---|---|
개발 언어 | PHP 7.2 |
/files/attach/images/160490/955/222/002/f27c275c03b3da7e3deaf14fc44e21ab.jpg
이런 소스의 숫자를 세려고 합니다.
/files/attach/images/ 가 포함된 소스의 숫자만 세면 같은 이미지를 여러번 삽입한 경우 중복 카운트가 됩니다.
그래서 파일명까지 고려해서 중복은 제외해야 하는데 어렵네요.
현재는 단순히
$content = $oDocument->get('content');
$icount = substr_count($content, "files/attach/images");
이렇게까지만 카운트하니 10% 모자란 중복으로 같은 이미지를 본문에 여러번 넣은 경우가 조건에서 빠져버려서요.
댓글 5
$content = '<img src="//www.asdf.dddd/files/attach/images/160490/955/222/002/f27c275c03b3da7e3deaf14fc44e21ab.jpg"/>';
$content .= '<img src="//www.asdf.dddd/files/attach/images/160490/955/222/002/f27c275c03b3da7e3deaf14fc44e21ab.jpg"/>';
$content .= '<img src="https://www.asdf.dddd/files/attach/images/160490/955/222/002/f27c275c03b3da7e3deaf14fc44e21ab.jpg"/>';
$content .= '<img src="http://www.asdf.dddd/files/attach/images/160490/955/222/002/f27c275c03b3dwesrtwert14fc44e21ab.jpg"/>';
$content .= '<img src="/files/attach/images/160490/955/222/002/f27c275c03b3dwesrtwert14fc44e21ab.jpg"/>';
$content .= '<img src="//www.asdf.dddd/files/attach/images/160490/955/222/002/f27c275c03b3dwesrtwert14fc44e21ab.jpg"/>';
$content .= '<img src="//www.asdf.dddd/files/attach/images/160490/955/222/002/f27c27hhhhhhhfc44e21ab.jpg"/>';
$content .= '<img src="//www.asdf.dddd/files/attach/images/160490/955/222/002/f27c275chhhhhhs1ab.jpg"/>';
$content .= '<img src="//www.asdf.dddd/files/attach/images/160490/955/222/002/f27c275c03b3da7e3deaf14fc44e21ab.jpg"/>';
$content .= '<img src="/files/attach/images/160490/955/222/002/f27c275c0sdfsdfdsfc44e21ab.jpg"/>';
$content .= '<img src="//www.asdf.dddd/files/attach/images/160490/955/222/002/f27c275c03bsdfsdgggfc44e21ab.jpg"/>';
$content .= '<img src="//www.asdf.dddd/files/attach/images/160490/955/222/002/f27c275c03b3dggdeaf14fc44e21ab.jpg"/>';
$content .= '<img src="/files/attach/images/160490/955/222/002/f27c275c03ggfdsgfgsdg14fc44e21ab.jpg"/>';
$regex = "/\/files\/attach\/images\/((?:[0-9]+\/)+[0-9a-z]+.[0-9a-z]+)/";
preg_match_all($regex, $content, $result);
$links = array();
if($result && count($result)) {
foreach($result[1] as $key=>$value) {
$link = "/files/attach/images/".$value;
$find = false;
foreach($links as $eachLink) {
if($eachLink->link === $link) {
$find = $eachLink;
}
}
if(!$find) {
$obj = new stdClass;
$obj->link = "/files/attach/images/".$value;
$obj->count = 1;
$links[] = $obj;
} else {
$find->count += 1;
}
}
}
$linkCount = count($links);
최종적으로 $linkCount는 8.
$content는 내용, linkCount는 중복 제외 링크 갯수입니다.
$content = $oDocument->get('content');
$icount = preg_match_all('!/files/attach/images/[0-9a-z/]+\.[a-z]+!i', $content, $matches) ? count(array_unique($matches[0])) : 0;
만들어주신 캐시서버 이미지주소로 변환해주는 애드온이 저로 인해 지금 산으로 갔습니다 ㅋㅋ
- 모르고 첨부삭제를 누른 후 다시 첨부를 안하는 경우 본문에 소스가 지워지지 않아 이를 눈치채지 못한 경우 캐시서버쪽으로 치환하지 않도록 하려고 어제 시도했는데 보다 정교하게 중복소스가 들어간 경우도 완벽하게 처리하려고 질문하게 되었네요 ㅋ