Problems with preg_replace and ? (question mark) - what to do?

wormat22

New Member
I have made this line of code to make the words, that is searced for, enhanced.\[code\]$tekst = preg_replace("/($searchstr)/i", '<span style="color: 8fb842; font-weight: bold;">$1</span>', $tekst);\[/code\]But my problem is, that when I make $searchstr = '?'; it is setting between every letter in the $tekst string.The whole script is:\[code\]/////////////////////////////////// Set variables and arrays/////////////////////////////////$arr_sim = array();if( !empty($_GET['search']) ){ $text=strtolower($_GET['search']); $code_entities_replace = array(' ','--','"','!','@','#','$','%','^','&','*','(',')','_','+','{','}','|',':','"','<','>','?','[',']','\\',';',"'",',','.','/','~','`','=', '?', '?', '&aelig;', '?', '?', '&oslash;', '?', '&aring;', '?'); $code_entities_match = array('-','--','','_quot_','_s_','_s-a_','_sq_','procent','_tria_','_and_','_star_','_par-st_','_par-end_','_us_','_plus_','_tub-st_','_tub-end_','_line_','_col_','_anf_','_lt_','_st_','_qm_','_sqpar-s_','_sqpar-e_','_backsla2_', '_semcol_','_1anf_','_comma_','_punc_','_slash_','_nearequ_', '_msql-anf_', '_equal_', 'ae', 'ae', 'ae', 'oe', 'oe', 'oe', 'aa', 'aa', 'aa'); $text = str_replace($code_entities_match, $code_entities_replace, $text); $searchstr = $text; $search_str = $showpages->escape_str($text); $showpages->_table = 'pages'; $showpages->_where = " tekst LIKE '%". $search_str . "%' AND language_id = '" . $_SESSION['lang_id']. "'"; $showpages->_orderby = 'id'; $showpages->_order = 'desc'; $f = $showpages->search(); while ( $row = mysql_fetch_array($f) ) { $arr_text = explode(" ",$row['tekst']); $percent = 0; $words = count($arr_text); foreach( $arr_text as $k => $v ) { similar_text($search_str, $v, $p); $percent += $p; } $percent = $percent / $words; $arr_sim[] = array('percent' => $percent, 'id' => $row['id']); }}/////////////////////////////////// Set some variables/////////////////////////////////$arr_len = count($arr_sim);if( !empty($_GET['offset']) ) $offset = $showpages->escape_str($_GET['offset']);else $offset = 0;if( $arr_len >= 15 ){ $limit = 15;} else { $limit = $arr_len;}$start = $offset+$limit;rsort($arr_sim); // Sort the array to make the script show in the right order.////////////////////////////////////////////////////// Show content////////////////////if( $arr_len > 0 )// check if the search is performed and any hits were found.{ for( $i = $offset; $i < $start; $i++) { // $arr_sim[$i]['id'] $showpages->_table = 'pages'; $showpages->_id = $arr_sim[$i]['id']; $showpages->_orderby = 'id'; $showpages->_order = 'desc'; $z = $showpages->search(); $r = $showpages->fetch_array( $z ); $tekst = strip_tags($r['tekst'], "<p><a>"); $str_pos = strpos($tekst, $searchstr); if( $str_pos > 50 ){ $start_str = '...'; if(strlen($tekst) > 200) { $end_str = '...'; } $tekst = substr($tekst, $str_pos-50, 200); } else { $start_str = ''; if(strlen($tekst) > 200) { $end_str = '...'; } $tekst = substr($tekst, 0, 200); } $tekst = preg_replace("/($searchstr)/i", '<span style="color: 8fb842; font-weight: bold;">$1</span>', $tekst); $dataa .= '<style type="text/css">.search-fr { margin-bottom: 15px; } .search-fr a {padding: 0; margin: 0 0 5px 0; font-weight: bold; font-size: 14px;} .search-fr p { padding: 0; margin: 0;}</style>'; $dataa .= '<div class="search-fr">'; $dataa .= '<a href="' . HTTP_SITE_ROOT . DIRECTORY_SEPERATOR . $r['metashorttag'] . '" class="link2">' . $r['emne'] . '</a> - Matcher din s?gning <b>'. round($arr_sim[$i]['percent']).'%</b><br />'; $dataa .= $start_str.$tekst.$end_str; $dataa .= '</div>'; }} else { $dataa .= 'Der er ikke fundet nogle sider, der matcher din s?gning. Pr?v igen.';}\[/code\]
 
Back
Top