I can run JS Code smoothly but unfortunately, I could not do the same in PHP. I want to change some terms in the text for highlight. How can I do that?
var words = 'word1#word2#word3'; var string = 'hello world, this is a word1, word2 and word3'; words.split("#").map(w => { var regex = new RegExp('\b' + w + '\b', 'gi'); string = string.replace(regex, `<span class="highlight">${w}</span>`); }); console.log(string);
PHP code:
$words = 'word1#word2#word3'; $string = "hello world, this is a word1, word2 and word3"; $parts = explode('#', $words); preg_match_all('\b' + w + '\b', 'gi', $string, $parts); $result = array_combine($parts[1], $parts[2]); var_dump($result);
Advertisement
Answer
I used explode
to create an array of patterns called $highlights
, to match the words that it exploded by space too, then i do a loop foreach
over a $words
and check if it match any of highlights words by using in_array
if so will highlight it by using span
tag colored with red, otherwise it return it as it is.
<?php $highlights = 'word1#word2#word3'; $pieces = explode('#', $highlights); $sentence = "hello world, this sentence contains some word should be highlighted a word1 and word2 and word3"; $words = explode(' ', $sentence); $highlighted = ''; foreach ($words as $word) { if(in_array($word, $pieces)) $highlighted .= "<span style='color:red;'>$word</span> "; else $highlighted .= $word." "; } echo $highlighted; ?>