2012-05-14 2 views
1

У меня есть функция, которая подталкивает текст, он хорошо работает, за исключением того, что мне нужно заменить «:» на «/». В настоящее время он заменяет все небуквенные символы или цифры «-». Вот он:Как заменить «:» на «/» в функции slugify?

function slugify($text) 
    { 
     // replace non letter or digits by - 
     $text = preg_replace('~[^\\pL\d]+~u', '-', $text); 

     // trim 
     $text = trim($text, '-'); 

     // transliterate 
     if (function_exists('iconv')) 
     { 
      $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); 
     } 

     // lowercase 
     $text = strtolower($text); 

     // remove unwanted characters 
     $text = preg_replace('~[^-\w]+~', '', $text); 

     if (empty($text)) 
     { 
      return 'n-a'; 
     } 

     return $text; 
    } 
+3

Какой вопрос? – zerkms

ответ

-1

Я сделал пару модификаций. Я предоставил поиск/заменить множество массивов, чтобы позволить нам заменить практически все с -, но заменить : с /:

$search = array('~[^\\pL\d:]+~u', '~:~'); 
$replace = array('-', '/'); 
$text = preg_replace($search, $replace, $text); 

И потом, это последнее preg_replace заменял нашего / с пустой строкой. Поэтому я допустил удары с червями в классе символов.

$text = preg_replace('~[^-\w\/]+~', '', $text); 

которая выводит следующее:

// antiques/antiquities 
echo slugify("Antiques:Antiquities"); 
+0

Да, я знаю это, но как насчет функции slugify? Я имею в виду, что я мог бы просто сделать str_replace, если бы я хотел просто заменить «:» на «/», но мне нужно все-таки убрать строку (удалить специальные символы и т. Д.), За исключением того, что «:» следует заменить на «/» вместо "-". – themihai

+0

@mihai Вы помещаете это * внутрь * функцию slugify, как часть процесса. – Sampson

+0

не работает. «:» по-прежнему заменяется на «-». Я думаю, что это имеет смысл, поскольку мы имеем $ text = preg_replace ('~ [^ \\ pL \ d] + ~ u', '-', $ text); не так ли? – themihai

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