티스토리 뷰
/**
* @brief 본문 내 적절한 배너 삽입 위치 분석 후 [AD] 표식을 심음
* @author darthJun (itzone.tistory.com)
* @date 2015-07-16
*/
function injectBannerSignToContent($content)
{
// 본문 문단 구분 < br > < br > 로 가정. 미니위니 에디터가 이러함
$paragraphs = preg_split("/<br\s?\/?><br\s?\/?>/i", $content);
$paragraphCount = count($paragraphs); // 문단 수
$weight = 0; // 문단의 텍스트 가중치
$weights = array(); // 문단별 텍스트 가중치
// 문단들 텍스트 가중치 측정
for($i=0; $i < $paragraphCount; $i++) {
$p = trim($paragraphs[$i]);
if (preg_match('/(<center|<iframe|<table|<img)/i', $p)) {
$weight = 0;
$weights[$i] = $weight;
} else {
++$weight; // 일단 가중치는 추가
if ($weight >= 2) { // 가중치가 2 이상이면
// 하위 가중치들 가중치먹임
for($j=($i-1); $j > 0; $j--) {
if ($weights[$j] < 1) break;
$weights[$j] += 1;
}
// 자신의 가중치는 일단 추가 전 가중치로
$weights[$i] = --$weight;
} else {
$weights[$i] = $weight;
}
}
}
//print_r($weights); exit(); // 문단별 가중치 점수 디버깅
$isFirst = false;
$max_weight = max($weights);
$result = "";
for($i=0; $i < $paragraphCount; $i++) {
$cssClass = "p{$i}";
// 가장 위 배너 삽입 위치
if (!$isFirst && $weights[$i] == 2) {
$isFirst = true;
$cssClass .= " adver";
$paragraphs[$i] = "". $paragraphs[$i];
}
// 가장 적절한 배너 삽입 위치
if ($max_weight == $weights[$i]) {
$cssClass .= " adver";
$paragraphs[$i] = "". $paragraphs[$i];
}
$result .= ''. $paragraphs[$i] .'
';
}
return $result;
}'웹프로그래밍 > PHP' 카테고리의 다른 글
| PHP CLI Lint (0) | 2015.08.24 |
|---|---|
| Codeigniter Only variable references should be returned by reference (0) | 2015.08.05 |
| XE 위젯을 모듈에서 표시하는 법 (0) | 2015.06.05 |
| CodeIgniter Form action POST the action ... now allowed Error (2) | 2015.03.19 |
| PHP Composer package version 표현법 (0) | 2015.02.25 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Android
- mssql
- PHP
- nodejs
- Docker
- JQuery
- 워드프레스
- 한글
- sencha touch
- Debug
- JSON
- classic asp
- API
- ASP
- git
- Linux
- Mac
- iis
- javascript
- CSS
- IE
- laravel
- Wordpress
- IOS
- Prototype
- iphone
- nginx
- 안드로이드
- macos
- centos
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
글 보관함