2016-04-29 6 views
1
  • 多くの単語が含まれているarraysが多数あります。
  • 私はこれらの言葉に CSSスタイルを適用したい
  • は、それがなく、作品
  • は私がstr_replaceとexempleを持っているだけ

単語全体をしたい str_replace on whole words

  • つのアレイは、一つの色に対応したテキストで表示されますすべての言葉を考慮しない。 $result['avisits']$result['avisPronoums']および$result['avisWordsUser']は、文字列に含まれており、"\n"とデータベースに別個の単語です。 $result['avis']は、文字列私は言葉

    $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édosinglingcinglétecinglêcinglêtecinglé"; $ arr9 = ['foo'、 'cinglê'、 'boo']; $ arr10 = $ arr9; <$ i = 0; $ i "; } $ avis = preg_replace(sprintf( '/ \ b%s \ b /'、preg_quote($ arr10))、$ arr9、$ chaine); echo $ avis。 '
    '; –