소스 파일명 : search.php
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
<?php // (2018.2.19, 차재복, Cha Jae Bok, cjbword@gmailcom)

//	$m_search = $_REQUEST[m_search];

	$query = "select title, abbr, id,
						getpriority(id) as pathinfo, 
						case when title='$m_search' then 1 else 0 end as ord_1, 
						match(title,abbr) against('$m_search') as ord_2 
				from km 
				where match(title,abbr) against('$m_search') 
				order by ord_1 desc, ord_2 desc";
				//  in boolean mode

	$result=mysqli_query($dbi,$query);
		if (mysqli_errno($dbi)) { echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";}

	while ( $matched=mysqli_fetch_array($result) ) {
		// path 정보
		$exploded = explode('|',$matched[pathinfo]);
		$path_str = explode('::',$exploded[1]);
		$path_id  = explode('::',$exploded[2]);
		// path 정보 보여주기		
		for ($i=0; $i< count($path_str); $i++) {
			echo "<a href='knowhow.php?id=".$path_id[$i]."' style='font-size:13px'>";
				echo $path_str[$i];
			echo "</a>";
			if($i < count($path_str)-1) echo " > ";
		}
		echo "<br>";

		// 타이틀
		echo "<a href='knowhow.php?id=".$matched[id]."' style='font-size:15px;font-weight:bold;'>".$matched[title]."</a>";
		echo "<br>";

		// 스트링 추출 동작
		echo "<font style='font-size:13px;'>";
			// 대상 문자열에서 줄바꿈 효과를 2자 띄어쓰기로 대체
			$tgt_str = array('</p>','</li>');
			$rpl_str = array('&nbsp;&nbsp;</p>','&nbsp;&nbsp;</li>');
			$m_abbr = str_replace($tgt_str,$rpl_str,$matched[abbr]);

			// 대상 문자열에서 html tag 제거
			$m_abbr = strip_tags($m_abbr);

			// 검색 문자열을 빈 칸 위주로 구분시켜 배열화
			$words = explode(' ',$m_search);

			// 검색 문자열 좌측부터 먼저 일치하는 부분 화면에 보임
			foreach ($words as $key => $value) {
				$pos = mb_stripos($m_abbr,$value,0,'utf-8');
				if ($pos === false) continue;
				echo "&nbsp;&nbsp;&nbsp;";
				echo " ... ".mb_substr($m_abbr,$pos,80,'utf-8')." ... ";
				if ($pos !== false) break;
			}
		echo "</font>";

		echo "<hr>";
	}

	if (mysqli_num_rows($result) == 0 ) echo "검색 결과 없음";

?>