多重爆炸

时间:2020-01-15 12:15:36

标签: php explode

我有一个来自excel的列,其中包含以下示例文本,我想用定界符将其分解。这是示例

params => method({ token: 'TOKEN FROM CONTEXT', ...params } as TParams)

,我需要用x分解它,我只需要第一个x之后的数字,即上面的17、18、19或20。我确实喜欢以下内容:

'ABC 11.0x17 / 1x4 / 2x4 XYZ'
'ABC 12.1x18 / 2x4 3x4 XYZ'
'ABC DEF 12.1x19 / 3x4 4x4 XYZ'
'ABC DEF GHI A1 13x20 / 3x4 / 4x4 XYZ'

它给我17/1,18/2等等,但是在这种情况下,我只需要17或18

如果有人有好的解决方案,请在这里写。

1 个答案:

答案 0 :(得分:1)

您可以使用preg_match提取第一个x之后的数字:

$strings = array(
    'ABC 11.0x17 / 1x4 2x4 XYZ',
    'ABC 12.1x18 / 2x4 3x4 XYZ',
    'ABC DEF 12.1x19 / 3x4 4x4 XYZ',
    'ABC DEF GHI A1 13x20 / 3x4 4x4 XYZ'
);

foreach ($strings as $str) {
    preg_match('/^[^x]+x(\d+)/', $str, $matches);
    echo $matches[1] . "\n";
}

输出:

17
18
19
20

Demo on 3v4l.org

如果只想使用explode,只需在爆炸x之后爆炸并取第一个值即可。

foreach ($strings as $str) {
    $text = explode('x', $str, 2);
    $text = explode(' ', $text[1]);
    echo "$text[0]\n";
}

Demo on 3v4l.org