2013-09-19 2 views
0

Я новичок в PHP. И потребуется помощь в решении следующей проблемы.PHP preg_replace - замена символов между специальными символами

Это исходная строка

/hs/?page_id=27&file=filename.jpg 

И я хотел бы, чтобы заменить следующим образом.

/hs/wp-content/gallery/filename.jpg 

И обратите внимание, что имя файла и идентификационный номер подвергаются изменению каждый раз. Итак, я думаю, что использование подстановочных знаков может быть лучшим выбором для замены символов между «?» и "=".

Как это можно сделать с помощью reg_replace? Или есть ли другое решение?

ответ

0

Самый простой способ заменить символы между ? и = является использование .* регулярных выражений часть, которая будет соответствовать «ничего, повторен любое число раз»

$result = preg_replace('[/hs/\?.*=]', '/hs/wp-content/gallery/', $input); 

Более общее решение, если вы хотите извлечь компонент file= любого URL-адреса ввода, даже если параметры находятся в другом порядке, будет:

$result = preg_replace('[.*file=([^&]*).*]', '/hs/wp-content/gallery/\1', $input); 
+0

большое спасибо за помощь. Он решил проблему. Большое спасибо Dan – Ish

1

PHP parse_url и parse_str функции могут быть использованы, если вы хотите, чтобы избежать регулярных выражений:

$url= '/hs/?page_id=27&file=filename.jpg'; 
$parsed = parse_url($url); 
parse_str($parsed['query'], $query); 

$new_url = $parsed['path'] . 'wp-content/gallery/' . $query['file']; 

Ideone demo.

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