2 votes

Modifier la couleur du texte lors de son affichage avec php

Pour l'instant, j'ai une zone de texte où les gens peuvent insérer leurs propres scripts pour que les gens puissent les voir, mais cela s'affiche actuellement de manière assez fade. enter image description here

Je me demandais s'il existait un moyen d'utiliser Jquery/Javascript/PHP pour que, lorsque l'on charge une note à partir de la base de données, une liste de mots soit vérifiée. Par exemple, "SELECT", "FROM", "WHERE", "INNER", "JOIN" et s'ils correspondent, ils prennent une couleur définie ?

Cela devrait se produire lorsque la note est affichée à l'écran, car le texte provient d'une base de données. Il existe donc peut-être un moyen de vérifier les mots au fur et à mesure qu'ils sont extraits de la base de données.

Ces notes sont tirées comme suit :

if (isset($_POST['noteid'])) 
{
    $showNoteInfo = "SELECT Note, NoteName FROM Notes WHERE NoteID = " . $_POST['noteid'];
    $stmt = sqlsrv_query($conn, $showNoteInfo);
}

if (isset($_POST['noteid'])) 
{
    if (empty($_POST['noteid'])) 
    {
        $notes = 'No Data';
    }
    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='editGeneralNote()'>&nbsp;&nbsp;&nbsp;</div>" . "<div data-toggle='modal' data-target='#editNoteNameModal' class='display-inline'>" . $data['NoteName'] . "</div>" . "&nbsp;<div class='save-note fa fa-thumbs-up' onclick='saveGeneralNote(); submitNoteText();'></div></div>
              </div>";
        echo "<textarea spellcheck='false' readonly id='ta1'>" . $data['Note'] . "</textarea>";
    } 
    else 
    {
        echo "No data found";
    }
}

Comment colorer certains mots tirés d'une base de données lorsqu'ils sont affichés à l'écran ?

Si quelqu'un peut m'aider, je lui en serais reconnaissant.

2voto

La bonne vieille méthode :

//Your keywords to be highlighted
$keyWord = array("SELECT", "FROM", "WHERE");
//The string to stlylish
$str = "Select * From db";

foreach(explode(" ", $str) as $word)
{   
    if (in_array(strtoupper($word), $keyWord)) 
    {
        echo '<span class="color">' . $word . '</span>';
    }
}

Si vous préférez obtenir le résultat du processus stylisé sous la forme d'une chaîne de caractères et non d'un simple echo . Vous pouvez utiliser implode . C'est le contraire de explode . Il suffit de stocker la ligne d'écho dans un tableau et d'imploser le tableau après la boucle, ce qui donne quelque chose comme ceci :

//Your keywords to be highlighted
$keyWord = array("SELECT", "FROM", "WHERE");
//The string to stlylish
$str = "Select * From db";
$result = array();

foreach(explode(" ", $str) as $word)
{   
    if (in_array(strtoupper($word), $keyWord)) 
    {
        array_push($result, '<span class="color">' . $word . '</span>');
    }
    else {
        array_push($result, $word);
    }
}

$str = implode($result, " ");
echo $str;

1voto

Pyromonk Points 595

Je le ferais avec preg_replace() :

$note = preg_replace('%(SELECT|FROM|WHERE)%m', '<span style="color: green;">$1</span>', $data['Note']);
echo $note;

$1 fait référence au premier groupe de capture. Plus d'informations sur les expressions régulières en PHP et les références aux regexp peuvent être trouvées aquí .

Comment l'utiliser dans votre scénario :

if (isset($_POST['noteid'])) 
{
    $showNoteInfo = "SELECT Note, NoteName FROM Notes WHERE NoteID = " . $_POST['noteid'];
    $stmt = sqlsrv_query($conn, $showNoteInfo);
}

if (isset($_POST['noteid'])) 
{
    if (empty($_POST['noteid'])) 
    {
        $notes = 'No Data';
    }
    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='editGeneralNote()'>&nbsp;&nbsp;&nbsp;</div>" . "<div data-toggle='modal' data-target='#editNoteNameModal' class='display-inline'>" . $data['NoteName'] . "</div>" . "&nbsp;<div class='save-note fa fa-thumbs-up' onclick='saveGeneralNote(); submitNoteText();'></div></div>
              </div>";
        $note = preg_replace('%(SELECT|FROM|WHERE)%m', '<span style="color: green;">$1</span>', $data['Note']);
        echo "<textarea spellcheck='false' readonly id='ta1'>$note</textarea>";
    } 
    else 
    {
        echo "No data found";
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X