Changeset 4426
- Timestamp:
- 10/27/2006 03:47:43 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/query.php
r4414 r4426 744 744 // If a search pattern is specified, load the posts that match 745 745 if (!empty($q['s'])) { 746 $q['s'] = addslashes_gpc($q['s']); 747 $search = ' AND ('; 748 $q['s'] = preg_replace('/, +/', ' ', $q['s']); 749 $q['s'] = str_replace(',', ' ', $q['s']); 750 $q['s'] = str_replace('"', ' ', $q['s']); 751 $q['s'] = trim($q['s']); 752 if ($q['exact']) { 753 $n = ''; 754 } else { 755 $n = '%'; 756 } 757 if (!$q['sentence']) { 758 $s_array = explode(' ',$q['s']); 759 $q['search_terms'] = $s_array; 760 $search .= '((post_title LIKE \''.$n.$s_array[0].$n.'\') OR (post_content LIKE \''.$n.$s_array[0].$n.'\'))'; 761 for ( $i = 1; $i < count($s_array); $i = $i + 1) { 762 $search .= ' AND ((post_title LIKE \''.$n.$s_array[$i].$n.'\') OR (post_content LIKE \''.$n.$s_array[$i].$n.'\'))'; 763 } 764 $search .= ' OR (post_title LIKE \''.$n.$q['s'].$n.'\') OR (post_content LIKE \''.$n.$q['s'].$n.'\')'; 765 $search .= ')'; 766 } else { 767 $search = ' AND ((post_title LIKE \''.$n.$q['s'].$n.'\') OR (post_content LIKE \''.$n.$q['s'].$n.'\'))'; 768 } 746 // added slashes screw with quote grouping when done early, so done later 747 $q['s'] = stripslashes($q['s']); 748 if ($q['sentence']) { 749 $q['search_terms'] = array($q['s']); 750 } 751 else { 752 preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $q[s], $matches); 753 $q['search_terms'] = array_map(create_function('$a', 'return trim($a, "\\"\'\\n\\r ");'), $matches[0]); 754 } 755 $n = ($q['exact']) ? '' : '%'; 756 $searchand = ''; 757 foreach((array)$q['search_terms'] as $term) { 758 $term = addslashes_gpc($term); 759 $search .= "{$searchand}((post_title LIKE '{$n}{$term}{$n}') OR (post_content LIKE '{$n}{$term}{$n}'))"; 760 $searchand = ' AND '; 761 } 762 $term = addslashes_gpc($q['s']); 763 if (!$q['sentence'] && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] ) $search .= " OR (post_title LIKE '{$n}{$term}{$n}') OR (post_content LIKE '{$n}{$term}{$n}')"; 764 765 $search = " AND ({$search}) "; 769 766 } 770 767
Note: See TracChangeset
for help on using the changeset viewer.