0

问题:我需要检查一个字符串中的关键短语,如果它包含这些短语,则分配给某个标签名称。

我正在使用 PHP 在 WordPress 中工作。

到目前为止,我创建的代码是:

/* WOMENS SPORTSWEAR TAGS */
function map_womens_sportswear_tags( $tag_name ) {
$tags = array(
    'Womens Tracksuit Pants' => array( 
        'Tracksuit Pants', 
        'Sweatpants', 
        'Shell Pants',
        'Jogger Pants',
        'Jogging Bottoms', 
        ), 
    'Womens Tracksuit Jackets' => array( 
        'Tracksuit Jacket',
        ),
    'Womens Fleece Jacket' => array(
        'Fleece', 
        ),
    );

foreach( $tags as $tag => $values ) {
    $current_tag = $tag; // Current tag is the name of the tag, like Womens Sports Shoe or Womens Tracksuit Pants
    foreach( $values as $value ) {
        if ( strtolower( $value ) == strtolower( $tag_name ) || stripos( $tag_name, $current_tag   ) ) {
            return $current_tag; // Returns tag name, i.e. 'Womens Sports Shoe' or 'Womens Tracksuit Pants'
            break;
        }
    }
}
return $tag_name;
}

因此,如果字符串包含单词 Jogging Bottoms,则分配给 Womens Tracksuit Pants。我为此目的使用了stripos,但是我无法让代码工作。

由于我是编码新手,请有人指出我正确的方向。提前谢谢了。

4

3 回答 3

0

看来您只是在 if 语句中混淆了变量:

if ( strtolower( $value ) == strtolower( $tag_name ) || stripos( $tag_name, $current_tag   ) ) {

应该

if ( strtolower( $value ) == strtolower( $tag_name ) || stripos( $tag_name, $value   ) ) {
于 2016-08-12T09:50:48.100 回答
0

尝试这个 :

foreach( $tags as $tag => $values ) {
    $current_tag = $tag; // Current tag is the name of the tag, like Womens Sports Shoe or Womens Tracksuit Pants
    foreach( $values as $value ) {
        if ( strtolower( $value ) == strtolower( trim($tag_name) ) || stripos( trim($tag_name), $current_tag   ) ) {
            return $current_tag; // Returns tag name, i.e. 'Womens Sports Shoe' or 'Womens Tracksuit Pants'
            break;
        }
    }
}
于 2016-08-12T09:48:28.003 回答
0

如果我理解正确,您正在搜索与$tag_name传递给您的函数的标签相匹配的标签。在你的stripos中(如果我是对的)你有反转的参数:1.字符串2.你在字符串中找到的关键词

检查结果是否是!== false因为仅使用一个简单的 if,结果为 0(在字符串第一次出现时)将返回 false(请参阅文档中的红色部分)。

于 2016-08-12T09:46:27.083 回答