Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 读取字符串直到第一个逗号,然后计算字符串的值?_Php_String_Magento - Fatal编程技术网

Php 读取字符串直到第一个逗号,然后计算字符串的值?

Php 读取字符串直到第一个逗号,然后计算字符串的值?,php,string,magento,Php,String,Magento,我有一个名为$DiscountDescription的字符串,有时可以用如下数据填充该字符串: A43544675, A33540055, A43544675, 或者像这样: A43544675, A33540055, A43544675, 基本上,我可以有一个值或两个值,用逗号分隔。我真的只需要第一个值。如果只有一个值,它后面总是有一个逗号和一个空格,这就是为什么在下面的代码中,我要删除逗号和空格来计算字符串 我现在的代码如下。如果字符串中只有一个值,而不是两个值,那么您可以看到我

我有一个名为
$DiscountDescription
的字符串,有时可以用如下数据填充该字符串:

A43544675, A33540055,
A43544675, 
或者像这样:

A43544675, A33540055,
A43544675, 
基本上,我可以有一个值或两个值,用逗号分隔。我真的只需要第一个值。如果只有一个值,它后面总是有一个逗号和一个空格,这就是为什么在下面的代码中,我要删除逗号和空格来计算字符串

我现在的代码如下。如果字符串中只有一个值,而不是两个值,那么您可以看到我只考虑了这一点。所以我要做的是找到逗号,抓住逗号左边的所有内容,并使其等于
$discountdescription

$DiscountDescription = $_order->getDiscountDescription();

$DiscountDescriptionTrimmed = substr_replace($DiscountDescription ,"",-2);

if ($DiscountDescriptionTrimmed != '') {
    if (substr($DiscountDescriptionTrimmed,0,1) === "e" && strlen($DiscountDescriptionTrimmed) === 11){
        $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription);
    }
    elseif (substr($DiscountDescriptionTrimmed,0,1) === "E" && strlen($DiscountDescriptionTrimmed) === 9){
        $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription);
    }
    elseif (substr($DiscountDescriptionTrimmed,0,1) === "A" && strlen($DiscountDescriptionTrimmed) === 9){
        $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription);
    }
    elseif (strlen($DiscountDescriptionTrimmed) === 17 && substr_count($DiscountDescriptionTrimmed,'-') === 2){
        $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription);
    }
    elseif (strlen($DiscountDescriptionTrimmed) === 8 && ctype_digit($DiscountDescriptionTrimmed)){
        $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription);
    }

}
您可以使用
strtok()
来实现这一点:

$DiscountDescriptionTrimmed = strtok($DiscountDescription, ', ');
如果需要第二个值,可以再次调用
strtok()

$SecondDiscountDescriptionTrimmed = strtok(', ');

使用simple
explode()
并获取
0
th索引如何

  $DiscountDescription1 = 'A43544675, A33540055,';
  $DiscountDescription2 = 'A43544675,';
  echo explode(',',$DiscountDescription1)[0];
  echo "\n";
  echo explode(',',$DiscountDescription2)[0];

演示:

第一行给出第一个值的长度,第二行提取它

$length = strpos($DiscountDescription, ',') + 1;
$DiscountDescriptionTrimmed = substr($DiscountDescription, 0, $length);

你不能使用/或类似的东西吗?
list($firstValue)=explode(“,”,$DiscountDescription)字符串是否可能以逗号开头<代码>$DiscountDescription=',A33540055'
?可以。没问题。