Я строю средство поиска PHP для определенных типов сообщений на веб-сайте (для этого, пожалуйста, примите, что о MySQL не может быть и речи).
После ряда процедур мы получаемtitle и теги для каждого сообщения и сохраните их в переменной с именем $full
.
. Условия поиска находятся в переменной с именем $terms
$full = $title . ' ' . $tago[$result->ID];
Оба преобразуются в нижниеcase.
Затем мы хотим найти похожие слова в $full
, используя $terms
Я попробовал это.
$final = strpos($full,$terms);
Это работает, но не совсем какну, мне это нужно.
- Это будет соответствовать аналогичным словам из заголовка и тегов, но не будет иметь дело с пробелами вообще.Я попытался удалить пробелы и запятую из заголовков и тегов, но безрезультатно.
- Если пользователь вводит кому-то имя, состоящее из двух тегов, а не одного, он не найдет никаких результатов.
- Он не может обрабатывать более одного слова, не говоря уже о нескольких терминах, оба из которых я хочу, чтобы он делал.
Вот полный сценарий, если он поможет
$proto = $_GET['p'];
$terms = $_GET['s'];
$terms = strtolower($terms);
$terms = str_replace(' ', '', $terms);
$ids = array();
if($proto == 'inline') {
$search = get_posts('post_type=post&post_status=publish');
foreach($search as $result) {
$title = get_the_title($result);
$tags = wp_get_post_tags( $result->ID);
foreach($tags as $tag){ $tago[$result->ID].= $tag->name;}
$full = $title . ' ' . $tago[$result->ID];
$full = strtolower($full);
$final = strpos($full,$terms);
if($final != false){
$ids[] = $result->ID;
}
}
if ($ids[0] == '') {
echo '<div align="center" style="text-align:center; color:#FFF;">No Results Found</div>';
return false; } else {
$args = array( 'post__in' => $ids );
$srs = get_posts($args);
foreach($srs as $sr) {
echo '<a href="'.$sr->post_slug.'"><img src=""/><b>'.$sr->post_title.'</b>'. $tago[$result->ID].'<span>'.date('dS M Y', strtotime($sr->post_date)).'</span></a>';
}
}
}
VALUES
$ term могут содержать некоторые значения, вводимые пользователем для поиска, скажем, 'red car';
$ full содержит заголовок сообщения и теги, чтобы онможно сказать.«Красный vaxhaul не очень хороший, автомобиль, машина, ужасный, уродливый»
Так что это должно быть найдено в этом случае.