【问题标题】:Php string condition check for plugin插件的php字符串条件检查
【发布时间】:2021-12-15 17:07:18
【问题描述】:

我在一个用于 Wordpress 的 wp all import 插件里面有这个函数来导入产品,它接受第一个值并重命名为第二个值,一个简单的映射函数。

我只想插入一个条件来检查字符串,如果不在那个字符串上,那么新字符串将是 $cat=uncategorized>$cat 换句话说,如果我的字典中没有 $cat=cars 然后我想替换为未分类的>汽车

function cat_change($cat){
    
    $cat = str_replace("XLARGE", "XL", $cat);
    $cat = str_replace("xl", "XL", $cat);
    $cat = str_replace("extralarge", "XL", $cat);
    
    
    $cat = str_replace("XXL", "2XL", $cat);
    $cat = str_replace("2XLARGE", "2XL", $cat);
    $cat = str_replace("2large", "2XL", $cat);
    $cat = str_replace("2xlarge", "2XL", $cat);
    
    $cat = str_replace("XXXL", "3XL", $cat);
    $cat = str_replace("3XLARGE", "3XL", $cat);
    $cat = str_replace("3large", "3XL", $cat);
    $cat = str_replace("3xlarge", "3XL", $cat);


    return $cat;
}

【问题讨论】:

  • 那么$size 是什么,在哪里可以找到。应该是$cat
  • @RiggsFolly 对不起,我重命名了,粘贴代码是我的错,该功能有效,但我想检查,如果不在那个字符串上,则返回其他内容......也许必须使用?请举个例子
  • 我不太确定你在问什么。您是说如果您要查找的单词在字符串$cat 中,那么是否应该从函数返回一些其他字符串
  • @RiggsFolly 没错!

标签: php wordpress plugins wpallimport


【解决方案1】:

首先,您可以将数组传递给str_replace,这样所有这些行都可以在一条线中完成。

然后您可以使用$find 数组和explode() 进行搜索,使用in_array() 来检查$find 中的至少一个单词是否存在于$cat 字符串中

function cat_change($cat){
    $find = ['XLARGE', 'xl','extralarge', 'XXL', '2XLARGE', '2large', '2xlarge', 'XXXL', '3XLARGE', '3large', '3xlarge'];
    $replace = ['XL','XL','XL', '2XL', '2XL','2XL','2XL','3XL','3XL','3XL','3XL'];

    $allwords = explode(' ', $cat);
    $found = FALSE;
    foreach ($find as $word){
        if (in_array($word, $allwords)){
            $found = true;
            break;
        }
    }
    if (!$found){
        return 'something else';
    }
    $cat = str_replace($find, $replace, $cat);
    return $cat;
}

$input = 'The quick XLARGE fox jumped over the 2XLARGE moon';
echo $input . PHP_EOL;
echo cat_change($input);

结果

The quick XLARGE fox jumped over the 2XLARGE moon
The quick XL fox jumped over the 2XL moon

或者使用没有任何查找值的输入

$input = 'The quick fox jumped over the moon';
echo $input . PHP_EOL;
echo cat_change($input);

结果

The quick fox jumped over the moon
something else

【讨论】:

  • 非常感谢您的帮助,还有人认为我从 xml 中获取的类别是这样的 bags>1|bags>2 |是第二个数据的分隔符,> 是子类别层次结构我将explode 更改为explode('|', $cat);并成为两个类别之一,我插入了 bag>1|bags>2 ,所以检查 bag>1 是否正确并正确重命名为 womens>bags>1 ,但它们也继续到 bag>2 ,不是正确的return: womens>bags>1 '别的东西' $find = ['bags>1','xxl']; $replace = ['womens>bags>1','2xl'];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2012-02-21
  • 2021-01-15
  • 2023-03-19
  • 2016-06-23
  • 1970-01-01
相关资源
最近更新 更多