2012-01-09 2 views

ответ

3

Я бы просто использовать strstr:

$result = strstr($collection, '.'); 

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

Например:

$result = ltrim(strstr($collection, '.'), '.'); 
1

Сделайте две реализации и попробуйте те, у которых есть микро-время (временная метка в микросекундах). При этом вы можете рассчитать самый быстрый метод с помощью собственной БД!

0

Вы можете попробовать использовать взрыв?

http://php.net/manual/en/function.explode.php

$collection = explode('.', $collection); 

$result = $collection[1]; 

Единственная проблема, если бы были другие . в вашей $collection переменной, как это приведет к тому, строка будет разделена снова, Althought Я считаю, если вы $collection = explode('.', $collection, 2); то, что не будет ,

0

Попробуйте это регулярное выражение, ваш не работает. Это может быть не самым быстрым способом:

preg_replace('/^[a-z]+./', '', $collection); 
+1

ОП хочет, чтобы пропустить все символы, это будет обрезать только в нижнем регистре букв и один дополнительный символ (точка не убежали). Имя, такое как 'database1.collection', станет' .collection' с этим выражением. – zrvan

1

Регулярное выражение будет:

$collection = preg_replace('/^.*\./', '', $collection); 

Где ^ это начало предмета, и .* не соответствует ничего, пока \. буквальный символ точки.

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

$collection = substr($collection, strpos($collection, ".") + 1); 
0

Я считаю, что ваше регулярное выражение нарушается. По возможности следует избегать регулярного выражения. Вот альтернатива:

$collection="mongodatabase.collection_name"; 
echo substr($collection,strpos($collection,".")+1); 

collection_name

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