我正在开发一个功能,将帖子的标题与标题列表(我网站上的产品)进行比较。
用于在我自己的网站上构建一个简单的广告系统,该系统会查看当前帖子的标题,并将其与我网站上产品的标题进行比较。
如果匹配,系统需要从帖子标题中剪切产品标题字符串并删除其余部分。
示例:
当前头衔:全新的山地自行车!
标题清单:
所以我的系统需要看标题:“一个全新的山地车!”,通过产品标题循环,如果它匹配“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;
}
}
}
答案 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 ) {
整个代码:
$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;
}
}
}