2014-06-19 4 views
-1

주어진 문자열에서 배경색이있는 여러 텍스트를 강조 표시하려고합니다.주어진 문자열에서 색상이있는 여러 키워드 강조 표시

은이 코드를 사용하고 있습니다 :

<style> 
.highlight{ 
background: #CEDAEB; 
} 
</style> 
<? 
$str = 'Led Plant Lamp , nikeshoes, hid xenon lamps, torchs, xenon lamp, mp3, mp4, sola, glass'; 
$keywords = array("k span","htc","nike","tma","ass","ck","rei","bov"); 
$style = 'highlight'; 
foreach($keywords as $keyword) 
{ 
    $replacement = "<span class='".$style."'>".$keyword."</span>"; 
    $str = str_ireplace($keyword, $replacement, $str); 
} 
return $str; 
?> 

Output:Led Plant Lamp , ass='highlight'>nikeshoes, hid xenon lamps, torchs, xenon lamp, mp3, mp4, sola, glass 

str_ireplace 기능은 스팬 클래스 키워드 엉덩이를 교체합니다. 이 코드

+1

실수가 일부 교체가 이미되었습니다 후 엉덩이를 교체하는 것이 사실이다. 엉덩이를 키워드의 첫 번째 위치로 옮기면 – JohannesB

+0

임시 해결책입니다. $ keyword 배열이 span 요소 뒤에 span 태그가 있으면이 코드가 – okconfused

답변

1

이 시도 :

<style> 
.highlight{ 
background: #CEDAEB; 
} 
</style> 
<? 
$str = 'Led Plant Lamp , nikeshoes, hid xenon lamps, torchs, xenon lamp, mp3, mp4, sola, glass'; 
$keywords = array("k span","htc","nike","tma","ass","ck","rei","bov"); 
$style = 'highlight'; 
$arr1 = array(); 
$input = $str; 
$str = explode(" ",$str); 
foreach($str as $index=>$strings) 
{ 
    for($i=0; $i<count($keywords); $i++) 
    { 
     if (stristr($strings, $keywords[$i]) !== false){     
      if(!isset($arr1[$index])) 
      { 
       $str_first_position = stripos($strings,$keywords[$i]); 
       $str_last_position = strlen($keywords[$i])-1 + $str_first_position; 
       $str_first_char = substr($strings,0,$str_first_position); 
       $str_last_char = substr($strings,$str_last_position+1,strlen($strings)); 
       $arr1[$index] = $str_first_char."<span class='".$style."'>".$keywords[$i]."</span>".$str_last_char; 
      } 
      break; 
     } 
    } 
} 
$arr2 = $arr1+$str; 
ksort($arr2); 
return implode(" ",$arr2); 
?> 
-1

에서 틀렸다 곳 친절이 시도 도와 :

<style> 
.highlight{ 
    background: #CEDAEB; 
} 
</style> 
<?php 
$str = "Led Plant Lamp , nikeshoes, hid xenon lamps, torchs, xenon lamp, mp3, mp4, sola, glass"; 
$keywords = array("ass", "k span", "htc", "nike","tma","ck","rei","bov"); 
$style = 'highlight'; 
foreach($keywords as $keyword) 
{ 
    $replacement = "<span class='highlight'>".$keyword."</span>"; 
    $str = str_ireplace($keyword, $replacement, $str); 
} 
var_dump($str); 
?> 
+0

으로 바뀌면 임시 해결책입니다. $ keywords 배열이 $ keyword이면 동적이기 때문에 임시 해결 방법입니다. span 요소가 있으면 span 태그가이 태그로 바뀝니다. – okconfused

관련 문제