Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New Coder
    Join Date
    Jun 2012
    Posts
    36
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Problem with html_entity_decode

    I have added a search feature to my pages which contains text stored in a database.
    The text contains html entity code which replaced html tags added by tinymice plugin
    so before output it is run through the html_entity_decode function -

    Output method before adding search feature -


    PHP Code:
    echo html_entity_decode($row["message"], ENT_QUOTES'utf-8'); 
    I have also added the following function, which works but I do not fully understand, to highlight the words included in the user's search text


    PHP Code:
    function highlight($text$search) {    
    preg_match_all('@\[email protected]'$search$m);   
     if(!
    $m)        
    return 
    $text;      
     
    $re '@\\b(' implode('|'$m[0]) . ')\\[email protected]';   
     return 
    preg_replace($re'<i class="hightlighttext">$0</i>'$text);} 
    I tried the following thinking it would remove the html and highlight the search words

    PHP Code:
     echo highlight(html_entity_decode($row['message'], ENT_QUOTES'utf-8'),$search); 
    However although the highlight still works the html tags continue to display.

    Is there a way to add the html_entity_decode somewhere within the actual highlight function?
    Last edited by maxwell5; Jan 12th, 2019 at 03:05 PM.

  2. #2
    New Coder
    Join Date
    Jun 2012
    Posts
    36
    Thanks
    1
    Thanked 0 Times in 0 Posts
    I think I have managed to do what is needed by assigning the database rows to a variable first

    PHP Code:
    $varr html_entity_decode($row['message'], ENT_QUOTES'utf-8'); 
    then running the variable through the highlight function having already been fully decoded

    PHP Code:
    function highlight($text$search) {    
    preg_match_all('@\[email protected]'$search$m);   
     if(!
    $m)        
    return 
    $text;      
     
    $re '@\\b(' implode('|'$m[0]) . ')\\[email protected]';   
     return 
    preg_replace($re'<i class="hightlighttext">$0</i>'$text);}  

    echo 
    "<p class='search-border-bottom'>".highlight($varr,$search)." </p>"


 

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •