PHP将标题与另一个标题进行比较

时间:2014-08-26 08:51:45

标签: php string wordpress loops strpos

我正在开发一个功能,将帖子的标题与标题列表(我网站上的产品)进行比较。

用于在我自己的网站上构建一个简单的广告系统,该系统会查看当前帖子的标题,并将其与我网站上产品的标题进行比较。

如果匹配,系统需要从帖子标题中剪切产品标题字符串并删除其余部分。

示例:

当前头衔:全新的山地自行车!

标题清单:

  1. 冰箱
  2. 山地
  3. 笔记本
  4. 所以我的系统需要看标题:“一个全新的山地车!”,通过产品标题循环,如果它匹配“Mountainbike”,它需要停止循环并切断“一个全新的”。 / p>

    所以我只有字符串:“mountainbike”。

    我的代码(我在Wordpress中构建):

        $current_title = get_the_title(); // "A brand new mountainbike!"
        $titles = new WP_Query( array( 'post_type' => 'products', 'posts_per_page' => 100 ) ); // List of titles
        if( $titles->have_posts() ) {
            while( $titles->have_posts() ) {
                $titles->the_post();
                $title = get_the_title(); // The product title from the list
                if( strpos( $current_title, $title ) ) {
                    // Here I need to cut the product from the title
                    $found = strpos( $current_title, $title );
                    break;
                }
            }
        }
    

2 个答案:

答案 0 :(得分:1)

感谢MoshMage,这段代码解决了我的问题。 $match变量现在包含产品名称。

$current_title = get_the_title();
$titles = new WP_Query( array( 'post_type' => 'products', 'posts_per_page' => -1 ) );
if( $titles->have_posts() ) {
   while( $titles->have_posts() ) {
        $titles->the_post();
        $title = get_the_title();
        if( preg_match('/' . $title . '/i', $current_title, $matched ) ) {
            $match = $matched[0];
        }
    }
} 

答案 1 :(得分:0)

strpos()是区分大小写的,因此" Mountainbike"在#34;一个全新的山地自行车中找不到!"。

将您的条件更改为:

if( stripos( $current_title, $title) !== false ) {
  • 使用不区分大小写的 stripos
  • 并且还使用!== false,因为如果你没有,并且在0号位置找到了这个角色那么你就不会有匹配的东西了 - 更多信息请参阅"Return values" section of php manual

整个代码:

 $current_title = get_the_title(); // "A brand new mountainbike!"
    $titles = new WP_Query( array( 'post_type' => 'products', 'posts_per_page' => 100 ) );      // List of titles
    if( $titles->have_posts() ) {
        while( $titles->have_posts() ) {
            $titles->the_post();
            $title = get_the_title(); // The product title from the list
            if( stripos($current_title, $title) !== false ) {
                // Here I need to cut the product from the title
                $found = $title;
                break;
            }
        }
    }