2015-05-05 2 views
0

Вот копия моего текущего кода:Использование preg_replace и str_ireplace

<? 
function smarty_modifier_url(&$url) { 

    //remove html tags 
    $url = strip_tags($url); 

    trim($url); 
    $url = preg_replace ('%[.,:\'"/\\\\[\]{}\%\-_!?]%simx', ' ', $url); 
    $url = str_ireplace (" ", "-", $url); 
    return $url; 
} 
?> 

Этот код изменяющие URL-адреса, которые показаны на моем сайте. Вот копия одного из URL-адресов:

http://example.com/listing/1/Testing-|-See-If-This-Works- 

Что мне нужно изменить в коде выше, чтобы удалить | показывать в URL-адресов и удалить - в конце URL? Любая помощь будет оценена по достоинству.

ответ

0

Это будет делать это:

$url = preg_replace('/(\||-$)/', '', $url); 

Пример:

<? 
function smarty_modifier_url(&$url) { 

    //remove html tags 
    $url = strip_tags($url); 

    trim($url); 
    $url = preg_replace ('%[.,:\'"/\\\\[\]{}\%\-_!?]%simx', ' ', $url); 
    $url = str_replace (" ", "-", $url); 
    $url = preg_replace('/(\||-$)/', '', $url); 
    $url = preg_replace('/[-]{2,}/', '-', $url); 
    return $url; 
} 
?> 

Демо:

http://ideone.com/XEIvFt

Regex объяснение:

(\||-$) 


Match the regex below and capture its match into backreference number 1 «(\||-$)» 
    Match this alternative «\|» 
     Match the character “|” literally «\|» 
    Or match this alternative «-$» 
     Match the character “-” literally «-» 
     Assert position at the end of the string, or before the line break at the end of the string, if any «$» 
+0

Это почти полностью исправляет это, но единственная проблема связана с удалением '|'. Похоже, ваш метод вызывает ту же проблему, что и при попытке ее исправления. URL-адрес изменяется на http: // example.com/listing/1/Testing - See-If-This-Works'. Он удаляет тире в конце, но теперь есть двойные тире, в которых раньше был '' '. Есть ли способ исправить это? – Jamie

+0

Я обновил ответ, дайте ему попробовать. –

+1

Работает отлично, спасибо! Я всегда принимаю ответы;) – Jamie

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