Регулярная экспрессия транскрипции - PullRequest
0 голосов
/ 27 июня 2011

Я должен перевести это: http://*myurl*/feedback.php?rcode=1307954819&lang=it

в

http://*myurl*/index.php?option=com_cake&module=lodgings&task=feedback&id=1307954819

Может ли кто-нибудь мне помочь? :)

Edit:

Я должен написать это в .htaccess, поэтому мне нужно переписать правила.

Ответы [ 4 ]

1 голос
/ 27 июня 2011
# activate rewrite engine
RewriteEngine On
# mark / as a root
RewriteBase /

# rewrite feedback.php
RewriteCond %{QUERY_STRING} ^rcode=(\d+)
RewriteRule ^feedback.php$ index.php?option=com_cake&module=lodgings&task=feedback&id=%1 [L]

Приведенное выше правило переписывает /feedback.php?rcode=1307954819&lang=it в /index.php?option=com_cake&module=lodgings&task=feedback&id=1307954819 без изменения URL-адреса в адресной строке браузера.

Если вам нужно изменить URL-адрес и в адресной строке (для перенаправления), измените [L] на [R=301,L]

1 голос
/ 27 июня 2011

Для этого вам не нужен RegEx.Вы можете использовать str_replace.

$URL='http://myurl/feedback.php?rcode=1307954819&lang=it';

$newURL=str_replace(array('http://myurl/feedback.php','?rcode=','&lang=it'),array('http://myurl/index.php','?option=com_cake&module=lodgings&task=feedback&id=',''),$URL);
1 голос
/ 27 июня 2011

Без учета опции счета и параметров модуля amd:

$url = 'http://*myurl*/feedback.php?rcode=1307954819&lang=it';

echo preg_replace('%^http://([^/]*)/([^.]*)\.php\?rcode=([0-9]*).*$%','http://$1/index.php?option=com_cake&module=lodgings&task=$2&id=$3',$url);

В .htaccess должно быть:

RewriteRule ^/([^.]*)\.php\?rcode=([0-9]*).*$ /index.php?option=com_cake&module=lodgings&task=$1&id=$2
0 голосов
/ 27 июня 2011

Мой пример на C # (не разработчик php), но шаблон регулярных выражений должен работать на обоих языках ..

void Main()
{
    string input = @"http://myurl/feedback.php?rcode=1307954819&lang=it";

    Regex pattern = new Regex(".+?&?rcode=([^&]+)");

    string output = pattern.Replace(input, @"http://myurl/index.php?option=com_cake&module=lodgings&task=feedback&id=$1");

    Console.WriteLine(output);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...