/** * Add feed to system * * @param Feed $feed */ private function updateFeed(Feed $feed) { require_once 'Ifphp/models/Posts.php'; $feedSource = Zend_Feed_Reader::import($feed->url); $posts = new Posts(); $tdate = $feedSource->current()->getDateModified(); $tdate = new Zend_Date($tdate); while ($feedSource->valid() && $tdate->toValue() > $feed->lastPing && !$posts->getByLink($feedSource->current()->getPermaLink())) { $tdate = $feedSource->current()->getDateModified(); $tdate = new Zend_Date($tdate); $defaultFilterChain = new Zend_Filter(); $defaultFilterChain->addFilter(new Ifphp_Filter_XSSClean()); $defaultFilterChain->addFilter(new Zend_Filter_StringTrim()); $defaultFilterChain->addFilter(new Zend_Filter_StripTags()); $post = $posts->createRow(); $post->title = $defaultFilterChain->filter($feedSource->current()->getTitle()); $post->description = $defaultFilterChain->filter($feedSource->current()->getDescription()); $post->feedId = $defaultFilterChain->filter($feed->id); $post->link = $defaultFilterChain->filter($feedSource->current()->getPermaLink()); $post->publishDate = $tdate->toValue(); $post->save(); Ifphp_Controller_Front::getInstance()->getPluginBroker()->addPost($post, $feed); $feedSource->next(); } $feed->lastPing = time(); $feed->save(); }
/** * Ensures that filters are executed in the expected order (FIFO) * * @return void */ public function testFilterOrder() { $this->_filter->addFilter(new Zend_FilterTest_LowerCase())->addFilter(new Zend_FilterTest_StripUpperCase()); $value = 'AbC'; $valueExpected = 'abc'; $this->assertEquals($valueExpected, $this->_filter->filter($value)); }
/** * Save changes to an existing panel. This can be expanded to allow adding of new Panels in the future. * * @return void */ protected function _savePanel() { // First of all we need to validate and sanitise the input from the form $urlFilter = new Zend_Filter(); $urlFilter->addFilter(new Zend_Filter_StringTrim()); $urlFilter->addFilter(new Zend_Filter_StringTrim('/')); $requiredText = new Zend_Validate(); $requiredText->addValidator(new Zend_Validate_NotEmpty()); $filters = array('id' => 'Digits'); $validators = array('id' => array('allowEmpty' => true), 'content' => array('allowEmpty' => true)); $input = new Zend_Filter_Input($filters, $validators, $_POST); if ($input->isValid()) { // Data is all valid, formatted and sanitized so we can save it in the database $panel = new Datasource_Cms_Panels(); if (!$input->id) { // This is a new panel so we need to create a new ID // NOT IMPLEMENTED - YET } else { $panel->saveChanges($input->id, $input->getUnescaped('content')); $panelID = $input->id; } // Changes saved - so send them back with a nice success message $this->_helper->getHelper('FlashMessenger')->addMessage(array('saved' => true)); $this->_helper->getHelper('Redirector')->goToUrl('/cms-admin/panels/edit?id=' . $panelID); } else { // Invalid data in form /* print_r($_POST); print_r($input->getErrors()); print_r($input->getInvalid()); */ } }
public function onAttachLink($data) { try { $viewer = Engine_Api::_()->user()->getViewer(); if (Engine_Api::_()->core()->hasSubject()) { $subject = Engine_Api::_()->core()->getSubject(); if ($subject->getType() != 'user') { $data['parent_type'] = $subject->getType(); $data['parent_id'] = $subject->getIdentity(); } } // Filter HTML $filter = new Zend_Filter(); $filter->addFilter(new Engine_Filter_Censor()); $filter->addFilter(new Engine_Filter_HtmlSpecialChars()); if (!empty($data['title'])) { $data['title'] = $filter->filter($data['title']); } if (!empty($data['description'])) { $data['description'] = $filter->filter($data['description']); } $link = Engine_Api::_()->getApi('links', 'core')->createLink($viewer, $data); } catch (Exception $e) { throw $e; return; } return $link; }
/** * */ protected function initNameFilter() { $filter = new ZendFilter(); $filter->addFilter($this->getStringTrim()); $filter->addFilter($this->getUcwords()); $this->elements['name'] = $filter; }
public function filter($value) { $filterChain = new Zend_Filter(); $filterChain->addFilter(new Zend_Filter_StripTags()); $filterChain->addFilter(new Zend_Filter_StringTrim()); $filterChain->addFilter(new Zend_Filter_StringToLower()); $value = $filterChain->filter($value); // replace accented characters $replaceArray = array('á' => 'a', 'é' => 'e', 'í' => 'i', 'ó' => 'o', 'ú' => 'u', 'à' => 'a', 'è' => 'e', 'ì' => 'i', 'ò' => 'o', 'ù' => 'u', 'ä' => 'a', 'ë' => 'e', 'ï' => 'i', 'ö' => 'o', 'ü' => 'u', 'â' => 'a', 'ê' => 'e', 'î' => 'i', 'ô' => 'o', 'û' => 'u', 'ç' => 'c', 'æ' => 'ae', 'œ' => 'oe', 'å' => 'a', 'ø' => 'o', '@' => 'at', '©' => 'copyright', '€' => 'euro', '™' => 'tm', '-' => ' ', '/' => ' ', '\\' => ' '); $value = str_replace(array_keys($replaceArray), array_values($replaceArray), $value); $valueTemp = ''; $allowedChars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_', ' '); $valueTemp = ''; for ($i = 0; $i < strlen($value); $i++) { if (in_array($value[$i], $allowedChars)) { $valueTemp .= $value[$i]; } } $value = $valueTemp; // replace double spaces $value = preg_replace('/\\s+/', ' ', $value); $filterChain = new Zend_Filter(); $filterChain->addFilter(new Zend_Filter_StringTrim()); $filterChain->addFilter(new Zend_Filter_Word_SeparatorToDash()); $value = $filterChain->filter($value); return $value; }
/** * Normalize tag * * Ensures tag is alphanumeric characters only, and all lowercase. * * @param string $tag * @return string */ public function normalizeTag($tag) { if (!isset($this->_tagFilter)) { require_once 'Zend/Filter.php'; require_once 'Zend/Filter/Alnum.php'; require_once 'Zend/Filter/StringToLower.php'; $this->_tagFilter = new Zend_Filter(); $this->_tagFilter->addFilter(new Zend_Filter_Alnum())->addFilter(new Zend_Filter_StringToLower()); } return $this->_tagFilter->filter($tag); }
/** * Run the cli application * * @return void */ public function run() { $oLogger = $this->getResource('log'); $iArgumentsAmount = $_SERVER['argc']; if (1 === $iArgumentsAmount) { echo 'Please specify the task to run' . PHP_EOL; $oLogger->err('Task not specified!'); exit; } $aArguments =& $_SERVER['argv']; $aArguments = array_slice($aArguments, 1); $oFilter = new Zend_Filter(); $oFilter->addFilter(new Zend_Filter_Word_UnderscoreToCamelCase()); $sTaskClass = 'AM_Cli_Task_' . $oFilter->filter($aArguments[0]); if (!class_exists($sTaskClass)) { echo sprintf('Class %s not found', $sTaskClass) . PHP_EOL; $oLogger->err(sprintf('Class %s not found', $sTaskClass)); exit; } try { $oTask = new $sTaskClass(); $oTask->run(); } catch (Exception $e) { $oLogger->err($e); exit; } }
protected function cleanHtml($html) { $chain = new Zend_Filter(); $chain->addFilter(new Zend_Filter_StripTags(self::$tags)); $chain->addFilter(new Zend_Filter_StringTrim()); $html = $chain->filter($html); $tmp = $html; while (1) { $html = preg_replace('/(<[^>]*)javascript:([^>]*>)/i', '$1$2', $html); if ($html == $tmp) { break; } $tmp = $html; } return $html; }
/** * Realoca uma Imagem do Formulário * @param string $filename Novo Nome do Arquivo * @return string|boolean Resultado Obtido */ protected function _realloc($prefix) { /* @var $arquivo Zend_Form_Element_File */ $arquivo = $this->_getForm()->getElement('arquivo'); if (is_array($arquivo->getFilename())) { // Não Enviado return false; } // Diretório Base $basename = APPLICATION_PATH . '/../public/images/sistema/'; // Remover Figuras com Prefixo $dir = new DirectoryIterator($basename); foreach ($dir as $current) { if (preg_match('/^' . $prefix . '/', $current->getFilename())) { unlink($current->getRealPath()); } } // Criação do Slug $filter = new Zend_Filter(); $filter->addFilter(new Zend_Filter_StringToLower())->addFilter(new Zend_Filter_Word_SeparatorToDash()); $slug = $filter->filter($prefix . ' ' . $arquivo->getFilename(null, false)); // Opções para Filtro $options = array('target' => $basename . $slug, 'overwrite' => true); // Renomear Arquivo $rename = new Zend_Filter_File_Rename($options); $result = $rename->filter($arquivo->getFilename()); return is_string($result) ? $slug : false; }
public function getMetadata() { $metadatas = array(); $ccToDashedFilter = new Zend_Filter(); $ccToDashedFilter->addFilter(new Zend_Filter_Word_CamelCaseToDash())->addFilter(new Zend_Filter_StringToLower()); $providerRegistry = ZendL_Tool_Rpc_Provider_Registry::getInstance(); $cliActionNames = array(); foreach ($providerRegistry->getActions() as $action) { $metadatas[] = new ZendL_Tool_Rpc_Manifest_ActionMetadata(array('actionName' => $action->getName(), 'name' => 'cliActionName', 'value' => $ccToDashedFilter->filter($action->getName()), 'reference' => $action)); } foreach ($providerRegistry->getProviderSignatures() as $providerSignature) { $group = $providerSignature->getName(); $cliProviderName = $ccToDashedFilter->filter($group); $metadatas[] = new ZendL_Tool_Rpc_Manifest_ProviderMetadata(array('providerName' => $providerSignature->getName(), 'name' => 'cliProviderName', 'value' => $cliProviderName, 'reference' => $providerSignature)); $cliSpecialtyNames = array(); $providerSignatureSpecialties = $providerSignature->getSpecialties(); foreach ($providerSignatureSpecialties as $specialty) { //$cliSpecialtyNames[$specialty] = $ccToDashedFilter->filter($specialty); $metadatas[] = new ZendL_Tool_Rpc_Manifest_ProviderMetadata(array('providerName' => $providerSignature->getName(), 'specialtyName' => $specialty, 'name' => 'cliSpecialtyNames', 'value' => $ccToDashedFilter->filter($specialty))); } $cliActionableMethodLongParameters = $cliActionableMethodShortParameters = array(); $actionableMethods = $providerSignature->getActionableMethods(); foreach ($actionableMethods as $methodName => $actionableMethodData) { foreach ($actionableMethodData['parameterInfo'] as $parameterName => $parameterInfoData) { $cliActionableMethodLongParameters[$parameterInfoData['name']] = $ccToDashedFilter->filter($parameterInfoData['name']); $cliActionableMethodShortParameters[$parameterInfoData['name']] = strtolower($parameterInfoData['name'][0]); } $metadatas[] = new ZendL_Tool_Rpc_Manifest_ProviderMetadata(array('providerName' => $providerSignature->getName(), 'specialtyName' => $actionableMethodData['specialty'], 'actionName' => $actionableMethodData['actionName'], 'name' => 'cliActionableMethodLongParameters', 'value' => $cliActionableMethodLongParameters, 'reference' => &$parameterInfoData)); $metadatas[] = new ZendL_Tool_Rpc_Manifest_ProviderMetadata(array('providerName' => $providerSignature->getName(), 'specialtyName' => $actionableMethodData['specialty'], 'actionName' => $actionableMethodData['actionName'], 'name' => 'cliActionableMethodShortParameters', 'value' => $cliActionableMethodShortParameters, 'reference' => &$parameterInfoData)); } } return $metadatas; }
/** * Filter data that was previously validated (input data) * If data was not valid, filter the error message that will * be output to the user (output data) * @access public * @return bool */ public function filter() { $this->_data = array(); $this->_error = array(); $values = $this->_options['values']; $validator = $this->_options['validator']; $filter = new Zend_Filter(); $filter->addFilter(new Zend_Filter_StringTrim()); foreach ($values as $k => $v) { if ($validator->isValid($values[$k])) { //filter the input $this->_data[$k] = $filter->filter($values[$k]); } else { foreach ($validator->getMessages() as $message) { //filter the output $this->_error[$k] = str_replace($values[$k], $filter->filter($values[$k]), $message); } } } if (empty($this->_error)) { return true; } else { return false; } }
/** * Normalize tag * * Ensures tag is alphanumeric characters only, and all lowercase. * * @param string $tag * @return string */ public function normalizeTag($tag) { if (!isset($this->_tagFilter)) { $this->_tagFilter = new Zend_Filter(); $this->_tagFilter->addFilter(new Zend_Filter_Alnum())->addFilter(new Zend_Filter_StringToLower()); } return $this->_tagFilter->filter($tag); }
/** * @see Zend_Db_Table_Abstract::_setupTableName */ protected function _setupTableName() { if (!$this->_name) { $oFilter = new Zend_Filter(); $oFilter->addFilter(new Zend_Filter_Word_CamelCaseToUnderscore())->addFilter(new Zend_Filter_StringToLower()); $this->_name = $oFilter->filter($this->_getModelName()); } }
protected function _convertTableNameToClassName($tableName) { if ($this->_nameFilter == null) { $this->_nameFilter = new Zend_Filter(); $this->_nameFilter->addFilter(new Zend_Filter_Word_UnderscoreToCamelCase()); } return $this->_nameFilter->filter($tableName); }
function filter($instr) { $outstr = null; $filterChain = new Zend_Filter(); $filterChain->addFilter(new Zend_Filter_StringToLower())->addFilter(new Zend_Filter_StringTrim()); $instr = $filterChain->filter($instr); $outstr = str_replace(" ", "-", trim($instr)); return $outstr; }
/** * Normalizuje ciag znakow z postaci stringa zawierajacego znaki specjalne i spacje do hasha * * @param string $value * @return string */ public function filter($value) { $filterChain = new Zend_Filter(); $filterChain->addFilter(new Base_Filter_NoDiacritics())->addFilter(new Zend_Filter_StringToLower()); $value = $filterChain->filter($value); $value = preg_replace('/[^0-9A-Za-z-_]/', null, $value); $value = trim($value, '-'); $value = trim($value, '_'); return $value; }
function addFilter(Zend_Filter_Interface $filter, $column = '') { if ('' === $column) { parent::addFilter($filter); } else { if (!isset($this->_columnFilters[$column])) { $this->_columnFilters[$column] = new Zend_Filter(); } $this->_columnFilters[$column]->addFilter($filter); } }
/** * Clear text from HTML tags and javascripts * * @param string $html * @return string */ protected function cleanHtml($html) { $chain = new Zend_Filter(); if ($this->isFilterTags) { $chain->addFilter(new Zend_Filter_StripTags(self::$tags)); } $chain->addFilter(new Zend_Filter_StringTrim()); $html = $chain->filter($html); $tmp = $html; while (1) { // Try and replace an occurrence of javascript: $html = preg_replace('/(<[^>]*)javascript:([^>]*>)/i', '$1$2', $html); // If nothing changed this iteration then break the loop if ($html == $tmp) { break; } $tmp = $html; } return $html; }
public function filter($value) { $filterChain = new Zend_Filter(); $htmlFilter = new HausDesign_Filter_HtmlPurifier(); $config = $htmlFilter->getConfig(); $config->set('AutoFormat', 'AutoParagraph', true); $config->set('AutoFormat', 'Linkify', true); $filterChain->addFilter($htmlFilter); //$geshiFilter = new HausDesign_Filter_Geshi(); //$filterChain->addFilter($geshiFilter); return $filterChain->filter($value); }
/** * Get helper name * @return string */ public function getName() { if (is_null($this->_sName)) { $sClassName = get_class($this); $aChunks = explode('_', $sClassName); $this->_sName = array_pop($aChunks); $oFilter = new Zend_Filter(); $oFilter->addFilter(new Zend_Filter_Word_CamelCaseToUnderscore())->addFilter(new Zend_Filter_StringToLower()); $this->_sName = $oFilter->filter($this->_sName); } return $this->_sName; }
public static function filter(&$data) { $filter = new Zend_Filter(); $filter->addFilter(new Zend_Filter_StringTrim())->addFilter(new Lds_Filter_Htmlspecialchars()); if (is_array($data)) { foreach ($data as $key => $value) { $data[$key] = $filter->filter($value); } } else { $data = $filter->filter($data); } }
/** * Filter url given to the toaster * * @param string $pageUrl * @return mixed|string */ public function filterUrl($pageUrl) { $filterChain = new Zend_Filter(); $filterChain->addFilter(new Zend_Filter_PregReplace(array('match' => '/-/', 'replace' => ' ')))->addFilter(new Zend_Filter_Alnum(true))->addFilter(new Zend_Filter_StringTrim())->addFilter(new Zend_Filter_StringToLower('UTF-8'))->addFilter(new Zend_Filter_PregReplace(array('match' => '/\\s+/', 'replace' => '-'))); // filtering the page url $pageUrl = $filterChain->filter($this->clean($pageUrl)); // add .html if needed // TODO: in fact it always needed because of Zend_Filter_Alnum in $filterChain if (!preg_match('/\\.html$/', $pageUrl)) { $pageUrl .= '.html'; } return $pageUrl; }
function filter($instr) { $outstr = null; $filterChain = new Zend_Filter(); $filterChain->addFilter(new Zend_Filter_StringToLower())->addFilter(new Zend_Filter_StripTags())->addFilter(new Zend_Filter_StringTrim()); $instr = $filterChain->filter($instr); $instr = str_replace(" ", "-", trim($instr)); preg_match_all("/^[a-z0-9\\-\\\$]{1,}\$/", $instr, $parts); foreach ($parts as $part) { $outstr .= $part[0]; } return $outstr; }
/** * Captura um Formulário de Determinado Tipo * @param string Nome do Formulário * @return Local_Form_FormAbstract Elemento Solicitado */ protected function _getFormReferencia($tipo) { // Filtro de Dados $filter = new Zend_Filter(); $filter->addFilter(new Zend_Filter_StringToLower())->addFilter(new Zend_Filter_Callback('ucfirst')); $tipo = $filter->filter($tipo); // Verificação if (!in_array($tipo, $this->_references)) { throw new Zend_Controller_Action_Exception('Invalid Referencia'); } $classname = 'Application_Form_Referencia_' . $tipo; $reflect = new Zend_Reflection_Class($classname); return $reflect->newInstance(array()); }
public function filter($value) { $words = explode(',', $value); $filterChain = new Zend_Filter(); $filterChain->addFilter(new Zend_Filter_StringTrim())->addFilter(new Zend_Filter_StringToLower())->addFilter(new Zend_Filter_StripNewlines())->addFilter(new Zend_Filter_Alnum(array('allowwhitespace' => true))); $filterd = array(); foreach ($words as $word) { $word = $filterChain->filter($word); if (strlen($word) > 0) { $filterd[] = $word; } } return implode(',', $filterd); }
public function filter($value) { $filterChain = new Zend_Filter(); $htmlFilter = new HausDesign_Filter_HtmlPurifier(); $config = $htmlFilter->getConfig(); $config->set('AutoFormat', 'AutoParagraph', true); $config->set('AutoFormat', 'Linkify', true); $allowed = $this->getAllowed(); if (null !== $allowed) { $config->set('HTML', 'Allowed', $allowed); } $filterChain->addFilter($htmlFilter); //$geshiFilter = new HausDesign_Filter_Geshi(); //$filterChain->addFilter($geshiFilter); return $filterChain->filter($value); }
/** * Creates resource instance by file extension * @param string $sResourceFilePath path to the resource's file * @return AM_Resource_Abstract * @throws AM_Resource_Exception */ public static function create($sResourceFilePath) { if (!AM_Tools_Standard::getInstance()->is_file($sResourceFilePath)) { throw new AM_Resource_Factory_Exception(sprintf('File \'%s\' not exists', $sResourceFilePath), 501); } $sFileExtension = pathinfo($sResourceFilePath, PATHINFO_EXTENSION); $oFilter = new Zend_Filter(); $oFilter->addFilter(new Zend_Filter_StringToLower(array('encoding' => 'UTF-8'))); $sClassPostfix = ucfirst($oFilter->filter($sFileExtension)); $sResourceClassName = AM_Resource_Abstract::RESOURCE_CONCRETE_CLASS_PREFIX . $sClassPostfix; $sFile = str_replace('_', DIRECTORY_SEPARATOR, $sResourceClassName) . '.php'; if (!AM_Tools_Standard::getInstance()->isReadable($sFile)) { throw new AM_Resource_Factory_Exception(sprintf('Class \'%s\' not found', $sResourceClassName), 502); } /* @var $oResource AM_Resource_Abstract */ $oResource = new $sResourceClassName($sResourceFilePath); return $oResource; }
/** * getMetadata() is required by the Manifest Interface. * * These are the following metadatas that will be setup: * * normalizedActionName * - metadata for actions * - value will be a dashed name for the action named in 'actionName' * normalizedProviderName * - metadata for providers * - value will be a dashed-name for the provider named in 'providerName' * normalizedProviderSpecialtyNames * - metadata for providers * normalizedActionableMethodLongParameters * - metadata for providers * normalizedActionableMethodShortParameters * - metadata for providers * * @return array Array of Metadatas */ public function getMetadata() { $metadatas = array(); // setup the camelCase to dashed filter to use since cli expects dashed named $lowerFilter = new Zend_Filter(); $lowerFilter->addFilter(new Zend_Filter_StringToLower()); // get the registry to get the action and provider repository $actionRepository = $this->_registry->getActionRepository(); $providerRepository = $this->_registry->getProviderRepository(); // loop through all actions and create a metadata for each foreach ($actionRepository->getActions() as $action) { // each action metadata will be called $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array('name' => 'normalizedActionName', 'value' => $lowerFilter->filter($action->getName()), 'reference' => $action, 'actionName' => $action->getName(), 'clientName' => 'all')); } foreach ($providerRepository->getProviderSignatures() as $providerSignature) { // create the metadata for the provider's cliProviderName $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array('name' => 'normalizedProviderName', 'value' => $lowerFilter->filter($providerSignature->getName()), 'reference' => $providerSignature, 'clientName' => 'all', 'providerName' => $providerSignature->getName())); // create the metadatas for the per provider specialites in providerSpecaltyNames foreach ($providerSignature->getSpecialties() as $specialty) { if ($specialty == '_Global') { continue; } $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array('name' => 'normalizedSpecialtyName', 'value' => $lowerFilter->filter($specialty), 'reference' => $providerSignature, 'clientName' => 'all', 'providerName' => $providerSignature->getName(), 'specialtyName' => $specialty)); } // $actionableMethod is keyed by the methodName (but not used) foreach ($providerSignature->getActionableMethods() as $actionableMethodData) { $methodLongParams = array(); $methodShortParams = array(); // $actionableMethodData get both the long and short names foreach ($actionableMethodData['parameterInfo'] as $parameterInfoData) { // filter to dashed $methodLongParams[$parameterInfoData['name']] = $lowerFilter->filter($parameterInfoData['name']); // simply lower the character, (its only 1 char after all) $methodShortParams[$parameterInfoData['name']] = strtolower($parameterInfoData['name'][0]); } // create metadata for the long name cliActionableMethodLongParameters $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array('name' => 'normalizedActionableMethodLongParams', 'value' => $methodLongParams, 'clientName' => 'console', 'providerName' => $providerSignature->getName(), 'specialtyName' => $actionableMethodData['specialty'], 'actionName' => $actionableMethodData['actionName'], 'reference' => &$actionableMethodData)); // create metadata for the short name cliActionableMethodShortParameters $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array('name' => 'normalizedActionableMethodShortParams', 'value' => $methodShortParams, 'clientName' => 'console', 'providerName' => $providerSignature->getName(), 'specialtyName' => $actionableMethodData['specialty'], 'actionName' => $actionableMethodData['actionName'], 'reference' => &$actionableMethodData)); } } return $metadatas; }
/** * @param string $value * @return string */ public static function generate($value) { $chars = array('ł‚', 'ń', 'ą', 'ę', 'ś', 'ć', 'ó', 'ż', 'ź', 'Ł', 'Ń', 'Ą', 'Ę', 'Ś', 'Ć', 'Ó', 'Ż', 'Ź', '!', '.', ':', ',', '-'); $charsChange = array('l', 'n', 'a', 'e', 's', 'c', 'o', 'z', 'z', 'L', 'N', 'A', 'E', 'S', 'C', 'O', 'Z', 'Z', '', '', '', '', ' '); $value = \Zend_Filter::filterStatic(str_replace($chars, $charsChange, $value), 'StringTrim'); $filter = new \Zend_Filter(); $filter->addFilter(new \Zend_Filter_StringToLower())->addFilter(new \Zend_Filter_PregReplace('#([^a-zA-Z0-9\\-])#i', '')); $array = explode(' ', $value); $count = count($array); $i = 0; $string = ''; foreach ($array as $item) { if (strlen($item) > 0) { $line = $i < $count - 1 ? '-' : ''; $string .= $filter->filter($item) . $line; } $i++; } return (string) $string; }