读取字符串直到第一个逗号,然后评估字符串的值?
Read string until first comma, then evaluate value of string?
我有一个名为 $DiscountDescription
的字符串,有时可以用这样的数据填充:
A43544675, A33540055,
或者像这样:
A43544675,
基本上,我可以在其中包含一个值或两个值,用逗号分隔。我真的只需要第一个值。如果只有一个值,它后面总是有一个逗号和一个 space,这就是为什么在我下面的代码中我要删除逗号和 space 来评估字符串。
我当前的代码如下。如果字符串中有一个值,但不是两个值,您可以看到我在哪里只考虑了这一点。所以我想做的是找到逗号,然后抓住逗号左侧的所有内容,并使其等于 $DiscountDescriptionTrimmed
.
$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(', ');
如何使用简单的 explode()
并获得第 0
个索引?
$DiscountDescription1 = 'A43544675, A33540055,';
$DiscountDescription2 = 'A43544675,';
echo explode(',',$DiscountDescription1)[0];
echo "\n";
echo explode(',',$DiscountDescription2)[0];
第一行给出第一个值的长度,第二行提取它。
$length = strpos($DiscountDescription, ',') + 1;
$DiscountDescriptionTrimmed = substr($DiscountDescription, 0, $length);
我有一个名为 $DiscountDescription
的字符串,有时可以用这样的数据填充:
A43544675, A33540055,
或者像这样:
A43544675,
基本上,我可以在其中包含一个值或两个值,用逗号分隔。我真的只需要第一个值。如果只有一个值,它后面总是有一个逗号和一个 space,这就是为什么在我下面的代码中我要删除逗号和 space 来评估字符串。
我当前的代码如下。如果字符串中有一个值,但不是两个值,您可以看到我在哪里只考虑了这一点。所以我想做的是找到逗号,然后抓住逗号左侧的所有内容,并使其等于 $DiscountDescriptionTrimmed
.
$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(', ');
如何使用简单的 explode()
并获得第 0
个索引?
$DiscountDescription1 = 'A43544675, A33540055,';
$DiscountDescription2 = 'A43544675,';
echo explode(',',$DiscountDescription1)[0];
echo "\n";
echo explode(',',$DiscountDescription2)[0];
第一行给出第一个值的长度,第二行提取它。
$length = strpos($DiscountDescription, ',') + 1;
$DiscountDescriptionTrimmed = substr($DiscountDescription, 0, $length);