2017-06-16 18 views
3

divに表示されている単語の色を変更するために、現在置き換えが行われています。PHP - preg_replaceを使用して、特定の文字の後ろにある単語の色を変更します。

ただし、現時点では単にテキストが一致しているだけです。私は私が今までに次の単語が単語の色の変化の後のスペースまで何であるか、@記号を置くので、もし方法があるかどうかを知りたいしかし

if (sqlsrv_has_rows($stmt)) 
     { 
      $data = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); 

      echo "<div class='custom-font title-container'> 
        <div class='expand-button-container fa fa-expand' onclick='expandWindow()'></div> 
        <div id='title-container1'><div class='edit-note fa fa-pencil' onclick='editSQLNote()'>&nbsp;&nbsp;&nbsp;</div>" . "<div data-toggle='modal' data-target='#editSQLNoteNameModal' class='display-inline'>" . $data['SQLNoteName'] . "</div>" . "&nbsp;<div class='save-note fa fa-thumbs-up' onclick='saveSQLNote(); submitSQLNoteText();'></div></div> 
        </div>"; 

      $note = nl2br($data['SQLNote']); 
      $note = preg_replace('%(SELECT|FROM|WHERE|INNER|JOIN|DISTINCT|LEFT|OUTER|APPLY|WITH|NOLOCK|DECLARE|ORDER BY|VARCHAR|bit)%m', '<span style="color: red;">$1</span>', $note); 
      $note = preg_replace('%(ISNULL|UPDATE|SET|INSERT INTO)%m', '<span style="color: #9A2EFE;">$1</span>', $note);   
      $note = preg_replace('%(IS NOT NULL|AND|IS NULL)%m', '<span style="color: grey;">$1</span>', $note); 
      $note = preg_replace('%(BEGIN TRAN|ROLLBACK TRAN|BEGIN|END|CASE|END|WHEN|THEN|ELSE)%m', '<span style="color: blue;">$1</span>', $note); 
      $note = preg_replace('%(GETDATE|MAX|CONVERT|UPDATE|CAST|COUNT)%m', '<span style="color: #FA58F4;">$1</span>', $note); 

      echo "<div contenteditable='true' id='ta4'>" . $note . "</div>"; 
     } 
     else 
     { 
      echo "No data found"; 
     } 

私は@hello入れて、彼らは(@記号を含むがこれだけアップ単語の終わりまで)緑

に変更されます@goodbyeあればしかし、私はハードコード単語はハロー可能にすることができず、なぜなら、彼らは常に異なっているからです(これらはユーザーによって宣言された変数なので、常に異なっています)。

@記号の後ろにある単語の色を動的に変更する方法はありますか?

これが意味をなさないのであれば、私はお詫び申し上げます。

+0

正しいregexpを使用しますか? –

答えて

2

私はこれはそれを行うだろうと思う:

$note = preg_replace('%(@.+?\b)%m', '<span style="color: green;">$1</span>', $note); 

.+?はワード境界(スペース、だけでなく、,.や改行などの文字)である第一\bまで非欲張りマッチです。

+0

素晴らしい、仕事を完璧にやった!それが私に許されるとすぐに答えとしてマークします(xDから6分後) –

関連する問題