我目前已经进行了preg-replace以更改div中显示的单词的颜色。
但目前它只是文本匹配。
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()'> </div>" . "<div data-toggle='modal' data-target='#editSQLNoteNameModal' class='display-inline'>" . $data['SQLNoteName'] . "</div>" . " <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 :(得分:2)
我认为这样做会:
$note = preg_replace('%(@.+?\b)%m', '<span style="color: green;">$1</span>', $note);
.+?
是一个非贪婪的匹配,直到第一个\b
为单词边界(空格,但也包括,
,.
和换行符等字符。