2013-07-16 3 views
0

У меня есть php строку вида:быстрый подход к деконструкции строку

somename_XXX_someothername_YYY 

XXX & YYY = Целые

Я хочу, чтобы извлечь somename и XXX в массиве, так что:

array [0] => somename 
array [1] => XXX 

Следующий мой подход к его достижению:

$a = array(); 
$x = 'stack_312_overflow_213'; 
$a[] = strstr($x, '_', true); 
$a[] = strstr(ltrim(strstr($x, '_', false), '_'), '_', true); 

Я хотел бы знать, если есть способ любой другой более быстрый способ сделать это, как мое приложение будет зачисткой около 10000 строк на этом пути.

P.S .: Я не очень-то знаю о скоростях или о том, что функции php являются самыми быстрыми, поэтому подумайте о размещении его здесь.

+7

'$ обр = взорваться ('_', $ строка);' затем [0] и [ 1] имеют свои значения? – naththedeveloper

+2

Что случилось с функцией native [explode] (http://www.php.net/explode)? –

+1

@middaparka: Да, я идиот. – xan

ответ

0

Просто используйте $arr = explode('_', $str); и значения в [0] и [1] место первые два значения Запрошенные

2

Быстрее взрываются и preg_match:

list($word, $num) = sscanf($x, '%[^_]_%d'); 

Также вы будете иметь $ Num как целое.

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

explode('_', $x, 3); 
0

Ниже приведены два способа получить информацию из строки. Какая из двух быстрее? Я действительно не знаю, но вы можете проверить это.

Этот результат от взрываются:

$result = explode('_', 'somename_XXX_someothername_YYY', 3); 

print_r($result); 

Используя регулярное выражение:

$matches = array(); 
preg_match('/^(.*?)_(.*?)_/', 'somename_XXX_someothername_YYY', $matches); 
array_shift($matches); //will remove the first match, which is "somename_XXX_" 

print_r($matches); 
+0

Я уверен, что регулярное выражение будет медленнее. Однако это не основано на каких-либо фактах. –

+1

** + 1 для regexp. ** * Не делясь дешевыми на десятки миллисекунд. * Написание кода легко понять и сохранить в первую очередь, сделать оптимизацию и только затем делать микро-оптимизации. – CodeAngry

+0

Я выполняю короткий тест (если мой php-сервер не сбой -_-) – Benz

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