Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的URL替换_Php_Regex - Fatal编程技术网

PHP中的URL替换

PHP中的URL替换,php,regex,Php,Regex,我正在尝试更改保存当前URL的字符串中的值。我在试着弄点像这样的东西 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 替换end.php的begin

我正在尝试更改保存当前URL的字符串中的值。我在试着弄点像这样的东西

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
替换
end.php
begin.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


那我该怎么做呢?

您希望他们如何从beigin.php访问end.php?似乎您可以将表单提交到end.php,并通过POST或GET变量传入变量


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

我最近为此制作了一个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;

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

<?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>";
?>


好吧,那应该行得通。
$url
的内容是什么?你确定这是你所期望的吗?我不熟悉正则表达式,但这在测试语句或
标题(“Location:…”)时会有所帮助调用,只要标题尚未发送。
<?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>";
?>