Несколько взорваться - PullRequest
       6

Несколько взорваться

0 голосов
/ 15 января 2020

У меня есть столбец из Excel с приведенным ниже примером текста, и я хочу разбить его в разделителе. Вот пример

'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'

, и мне нужно, чтобы он был взорван с помощью x, и мне нужен только номер, который после 1-го x, который будет 17, 18, 19 или 20 выше. Мне понравилось следующее:

$text   = explode('x', $row[6]);
echo $text[1]; 

Это дает мне 17/1, 18/2 и так далее, но мне просто нужно 17 или 18 в этом случае

Если у кого-нибудь есть хорошее решение пожалуйста, напишите здесь.

1 Ответ

1 голос
/ 15 января 2020

Вы можете использовать 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

Демонстрация на 3v4l.org

Если вы хотите использовать только explode, просто взорвитесь в пространстве после взрыва на x и примите первое значение:

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

Демонстрация на 3v4l.org

...