2012-06-11 3 views
0

То, чего я пытаюсь достичь, является:Может ли инфузорная слизь cakephp игнорировать указанные символы?

Позволяет затыкать инфаркт. Игнорировать специальный символ в строке, который обычно заменяется заменяющей строкой с помощью инфлекторной пули.

E.g. символов Я хочу быть проигнорировано: '/'

Входной сигнал: это/пример/

Выход: this_is_an_example

Выходной Я хочу: this_is_an_/пример/

Я нашел свойство '_uninflected' в документе, но я не думаю, что это то, что я ищу (и это не будет работать для того, что я хочу).

+0

'this_is_an_/example /' будет, конечно, разрешать два параметра 'this_is_an_' и' example' через маршрутизатор. Это действительно то, что вы хотите? – deceze

+0

Короче говоря, нет, вы не можете исключать символы. Если вам это нужно, вы должны реализовать свою собственную функцию пробок. Я рекомендую использовать 'iconv', если вы можете, так как это намного быстрее. – jeremyharris

+0

@deceze, маршрутизация выполняется чем-то другим, чем CakePHP, и в текущей ситуации да, это то, чего я хочу достичь. – pbond

ответ

0

Вы можете взорвать и пробить каждый токен.

$input='/hi/im/a/non inflected ùrl/:=D'; 
$tokens=explode('/',$input); 
foreach($tokens as &$token) $token=Inflector::slug($token); 
$output='this_is_an_'.implode('/',$tokens); 
+1

Близко к тому, что я сейчас использую. Я заменяю косые черты строкой-заполнителем, которую я заменяю с помощью косой черты после ее проталкивания. Я принимаю это как правильный ответ, поскольку, похоже, нет реального «правильного» решения. – pbond