2016-04-29 64 views
1
  • 我有很多arrays包含很多單詞。
  • 我想一個CSS樣式應用到這些詞出現在文本
  • 一個陣列對應一個顏色
  • 我只想

我有str_replace個例全詞,它的工作原理,但不是全盤的話。 $result['avisits'],$result['avisPronoums']$result['avisWordsUser']是字符串包含單詞"\n"單獨的數據庫。 $result['avis']是一個字符串包含文本,我想更換的話str_replace整個單詞

$arr1 = explode("\n", $result['avisits']); 
$arr2 = $arr1; 
for($i = 0; $i < count($arr1); ++$i) { 
    $arr1[$i] = "<font color='red'><u>".$arr1[$i]."</u></font>"; 
} 

$avis = str_replace($arr2, $arr1, $result['avis']); 

$arr3 = explode("\n", $result['avisPronoums']); 
$arr4 = $arr3; 
for($i = 0; $i < count($arr3); ++$i) { 
    $arr3[$i] = "<span style='background:Yellow'>".$arr3[$i]."</span>"; 
} 
$avis2 = str_replace($arr4, $arr3, $avis); 

$arr5 = explode("\n", $result['avisWordsUser']); 
$arr6 = $arr5; 
for($i = 0; $i < count($arr5); ++$i) { 
    $arr5[$i] = "<span style='background:GreenYellow'>".$arr5[$i]."</span>"; 
} 

$avis3 = str_replace($arr6, $arr5, $avis2); 
+0

請詳細解釋'$ result ['avisits']','$ result ['avis']','$ avis'默認值。 – ops

+1

爲什麼你必須進行替換隻是做遞歸循環,並在生成輸出之前替換單詞或給出一個更好的例子什麼是輸入和你期望替換什麼 – di3

回答

1

所以,如果我理解正確$result['avis']是要通過文字來格式化文字字符串?
你可以試着用' '來爆炸你的文字,它會用單詞將它分開,然後逐字地進行直接比較,然後將其折回。

$avis = explode(' ', $result['avis']); 
$cnt = count($avis); // Don't use count() in your for loops it is a huge perfomance hit 
for($i=0; $i < $cnt; $i++){ 
    if(in_array($avis[$i], $arr1)){ 
     $avis[$i] = "<font color='red'><u>".$avis[$i]."</u></font>"; 
    } 
    elseif(in_array($avis[$i], $arr3))... 
    // Do the other replacements here 
} 
$avis = implode(' ', $avis); 
+0

我會盡力!謝謝 –

1

str_replace()是沒有足夠的智慧判斷什麼是或不是「全字」;你需要使用preg_replace()

$avis = preg_replace(sprintf('/\b%s\b/', preg_quote($arr2)), $arr1, $result['avis']); 
// ... 
$avis2 = preg_replace(sprintf('/\b%s\b/', preg_quote($arr4)), $arr3, $avis); 
// ... 
$avis3 = preg_replace(sprintf('/\b%s\b/', preg_quote($arr6)), $arr5, $avis2); 
+0

這不會打印任何東西.... –

+0

$ chaine = 「cinglêàconnacinglédocinglecinglétecinglêcinglêtecinglé」; $ arr9 = ['foo','cinglê','boo']; $ arr10 = $ arr9; ($ i = 0; $ i 」。$ arr9 [$ i ]。「」; } $ {$ avis = preg_replace} echo $ avis。 '
'; –