2012-11-19 3 views
3

Я буду читать с помощью XML строку текста, которая дает время в минутах и ​​секундах, как показано ниже:Как извлечь фрагмент переменной длины из строки с помощью PHP?

«79 минут 43 секунд»

Но мне нужно, чтобы извлечь минут.

Протокола может быть 1,2,3 или 4 цифры номер со словом «минута» после пробела, то секунды, которые я не заинтересован.

Как я мог извлечь минуты понять в отдельная строка с использованием PHP?

ответ

3

Вы можете использовать (int) бросания конвертировать любые начальные цифры из строки в номер:

$minutes = (int)"79 minutes 43 seconds"; 

Этот подход ограничиваются строками, которые начинаются с числом и это число всегда означают минуты. В других случаях, вероятно, лучше использовать регулярные выражения.

+0

Да, это сделало то, что мне было нужно, спасибо! –

1

Если бы другой текст перед номером минут, вы можете извлечь значение, используя регулярное выражение:

$matches = array(); 
preg_match("/(\d+) minutes/", $your_input, $matches); 
$num_minutes = (int)$matches[1]; 
+0

Вы правы в отношении отсутствующего разделителя, но вы ошибаетесь в том, что побег - '' \\ d "' преобразуется в строку '\ d', потому что' \\ '- это одна косая черта после * PHP * стирание строки. Механизм регулярного выражения PHP достаточно умен, чтобы * также * принять управляющий символ, сгенерированный '' \ d "' самостоятельно, но с радостью примет '' \\ d "' (попробуйте). Если вы хотите совместить литеральную косую черту, вам действительно нужно использовать '' \\\\ '', чтобы сначала обойти стирание строки PHP, а затем вытеснить двигатель регулярного выражения. – Amber

Смежные вопросы