из Код (Text): Name_family_two в NameFamilyTwo и из Код (Text): NameFamilyTwo в Name_family_two как можно преобразовать, стало интересно мне? Спасибо! Насколько нагруженнным будет такой преобразование?
Zend_Filter_Word_SeparatorToCamelCase PHP: <?php public function filter($value) if (self::isUnicodeSupportEnabled()) { parent::setMatchPattern(array('#('.$pregQuotedSeparator.')(\p{L}{1})#e','#(^\p{Ll}{1})#e')); parent::setReplacement(array("strtoupper('\\2')","strtoupper('\\1')")); } else { parent::setMatchPattern(array('#('.$pregQuotedSeparator.')([A-Za-z]{1})#e','#(^[A-Za-z]{1})#e')); parent::setReplacement(array("strtoupper('\\2')","strtoupper('\\1')")); } return parent::filter($value); Собственно parent Zend_Filter_PregReplace PHP: <?php public function filter($value) { if ($this->_matchPattern == null) { require_once 'Zend/Filter/Exception.php'; throw new Zend_Filter_Exception(get_class($this) . ' does not have a valid MatchPattern set.'); } return preg_replace($this->_matchPattern, $this->_replacement, $value); }
Simpliest славное говно делается это в одну строчку PHP: <? print_r(preg_split("#(?=[A-Z])#","NameFamilyTwo")); ?> дальше - понятно
PHP: $str = "Name_family_two"; echo preg_replace('/(\w+)_(\w+)_(\w+)/e', '\'\1\' . ucfirst(\'\2\') . ucfirst(\'\3\')', $str); $str = "NameFamilyTwo"; echo preg_replace('/([[:upper:]][[:lower:]]+)([[:upper:]][[:lower:]]+)([[:upper:]][[:lower:]]+)/e', '\'\1_\' . lcfirst(\'\2\') . \'_\' . lcfirst(\'\3\')', $str );