PHP中的URL替换

时间:2012-04-16 22:50:45

标签: php regex

我正在尝试更改包含当前网址的字符串中的值。我想要得到像

这样的东西
http://myurl.com/test/begin.php?req=&srclang=english&destlang=english&service=MyMemory

看起来像

http://myurl.com/test/end.php?req=&srclang=english&destlang=english&service=MyMemory

替换begin.php end.php

我需要将end.php存储在变量中,以便它可以更改,但begin.php可以是静态字符串。

我尝试了这个,但它不起作用:

$endURL   = 'end.php';
$beginURL = 'begin.php';
$newURL   = str_ireplace($beginURL,$endURL,$url);

编辑: 另外,如果我想替换

http://myurl.com/begin.php?req=&srclang=english&destlang=english&service=MyMemory

http://newsite.com/end.php?req=&srclang=english&destlang=english&service=MyMemory

然后我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

假设您要替换网址的脚本文件名,可以使用以下内容:

<?php 
  $endURL   = 'end.php';
  $url ="http://myurl.com/test/begin.php?req=&srclang=english&destlang=english&service=MyMemory";
  $pattern = '/(.+)\/([^?\/]+)\?(.+)/';
  $replacement = '${1}/'.$endURL.'?${3}';
  $newURL = preg_replace($pattern , $replacement, $url);

   echo "url : $url <br>";
   echo "newURL : $newURL <br>";
?>

答案 1 :(得分:0)

你希望他们如何从beigin.php获得end.php?好像你可以将FORM提交给end.php并通过POST或GET变量传递变量。

更改用户所在页面(end.php,begin.php)的唯一方法是将它们链接到该页面的另一个页面,这需要刷新页面。

答案 2 :(得分:0)

我最近为此制作了一个PHP文件,它最终看起来像这样:

$vars = $_SERVER["QUERY_STRING"];
$filename = $_SERVER["PHP_SELF"];
$filename = substr($filename, 4);
// for me substr removed 'abc/' in the beginning of the string, you can of course adjust this variable, this is the "end.php"-variable for you.

if (strlen($vars) > 0) $vars = '?' . $vars;
$resultURL = "http://somewhere.com" . $filename . $vars;