正则表达式转录

时间:2011-06-27 09:53:05

标签: regex .htaccess mod-rewrite

我必须翻译一下:http://*myurl*/feedback.php?rcode=1307954819&lang=it

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

有人能帮助我吗? :)

编辑:

我必须在.htaccess中写一下,所以我需要重写规则。

4 个答案:

答案 0 :(得分:1)

您不需要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 :(得分:1)

没有考虑选项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

答案 2 :(得分:1)

# 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 ,而无需更改浏览器地址栏中的网址。

如果您还需要更改地址栏中的网址(进行重定向),请将[L]更改为[R=301,L]

答案 3 :(得分:0)

我的例子是在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);
}