Revision 1171
Added by Ruud about 15 years ago
frontend.functions.php | ||
---|---|---|
101 | 101 |
$string = str_replace($string_ul_umlaut, $string_ul_regex, $search_string); |
102 | 102 |
// the highlighting |
103 | 103 |
// match $string, but not inside <style>...</style>, <script>...</script>, <!--...--> or HTML-Tags |
104 |
// Also droplet tags are now excluded from highlighting. |
|
104 | 105 |
// split $string into pieces - "cut away" styles, scripts, comments, HTML-tags and eMail-addresses |
105 | 106 |
// we have to cut <pre> and <code> as well. |
106 | 107 |
// for HTML-Tags use <(?:[^<]|<.*>)*> which will match strings like <input ... value="<b>value</b>" > |
107 |
$matches = preg_split("~(<style.*</style>|<script.*</script>|<pre.*</pre>|<code.*</code>|<!--.*-->|<(?:[^<]|<.*>)*>|\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,8}\b)~iUs",$foo,-1,(PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY));
|
|
108 |
$matches = preg_split("~(\[\[.*\]\]|<style.*</style>|<script.*</script>|<pre.*</pre>|<code.*</code>|<!--.*-->|<(?:[^<]|<.*>)*>|\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,8}\b)~iUs",$foo,-1,(PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY));
|
|
108 | 109 |
if(is_array($matches) && $matches != array()) { |
109 | 110 |
$foo = ""; |
110 | 111 |
foreach($matches as $match) { |
111 |
if($match{0}!="<" && !preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,8}$/i', $match)) {
|
|
112 |
if($match{0}!="<" && !preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,8}$/i', $match) && !preg_match('~\[\[.*\]\]~', $match)) {
|
|
112 | 113 |
$match = str_replace(array('<', '>', '&', '"', ''', ' '), array('<', '>', '&', '"', '\'', "\xC2\xA0"), $match); |
113 | 114 |
$match = preg_replace('~('.$string.')~ui', '_span class=_highlight__$1_/span_',$match); |
114 | 115 |
$match = str_replace(array('&', '<', '>', '"', '\'', "\xC2\xA0"), array('&', '<', '>', '"', ''', ' '), $match); |
Also available in: Unified diff
fixed breaking droplets by highlighting search-words in search result pages.