2016-02-25 9 views
-1


Пожалуйста, помогите мне создать регулярное выражение для замены строки, как:
/техника/к-700/тип = ремонт
в строку, как
/ремонт/К-700/
вместо того, чтобы K-700 может быть любой другой комбинацией (между /) и вместо ремонта может быть только комплект.
Мне нужна картина и замена, пожалуйста. Мне так тяжело.
Мой результат не работает Wordpress:регулярное выражение для замены строки с Params

$pattern = '/technic/([0-9a-zA-Z-]+)/?type=$matches[1]'; 
$replacement = '/?/([0-9a-z-]+)/'; 
+0

вы хотели бы избавиться от * все * в том числе и после '? '? –

+0

@AlexAndrei Я думаю, что «ремонт» из строки запроса становится первым сегментом нового URL-адреса, а первый, который раньше был не используется. – mishu

+0

спасибо @mishu, пропустил, что –

ответ

2

Вы можете попробовать что-то вроде этого:

$test = preg_replace(
    '~/\w+/([\w-]+)/\?type=(\w+)~i', 
    '/$2/$1/', 
    '/technic/k-700/?type=repair' 
); 
var_dump($test); 

Результат будет:

string(14) "/repair/k-700/" 
+0

Так что я получаю его в RuntriteRule ^/$ 2/$ 1// ~/\ w +/([\ w -] +)/\? Type = (\ w +) ~ i [QSA, L] 'в моем htaccess-файле? – wep6ak

+0

Нет .. вы не указали, что вопрос связан с mod-rewrite .. это просто для php –

+1

@MateiMihai это в тегах ..., но да, web6ak, вы можете указать в вопросе: все ответы игнорируют RewriteRule! – fusion3k

1

Вам не нужно регулярное выражение , вы можете сделать это, используя explode():

$str = '/technic/k-700/?type=repair'; 
$first = explode('/', explode('?', $str)[0]); 
$second = explode('=', explode('?', $str)[1]); 
$first[1] = $second[1]; 
echo $new = implode("/",$first); 

//output: /repair/k-700/ 
+0

Результат должен быть '/ repair/k-700 /' –

+0

пропустить этот пункт, обновить. – mitkosoft

0

Для полноты или если вам нужно получить доступ к деталям URL-адреса позже.
Вот решение с использованием parse_url и parse_str

$str = '/technic/k-700/?type=repair'; 

$url = parse_url($str); 

$bits = explode('/',trim($url['path'],'/')); 

parse_str($url['query']); 

print '/' . $type . '/' . $bits[1] . '/' ; 

Какой будет выводить

/repair/k-700/ 
Смежные вопросы