2012-04-16 74 views
2

我試圖更改一個字符串中持有我當前URL的值。我試圖得到類似在PHP中的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 

更換begin.phpend.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 

那麼我會怎麼做呢?

+4

那麼,應該有效。 '$ url'的內容是什麼?你確定這是你所期望的嗎? http://codepad.org/kEjcMqYL – Ryan 2012-04-16 22:52:15

+0

我並不理解正則表達式,但這可以幫助您測試您的語句http://gskinner.com/RegExr/ – TerryProbert 2012-04-16 22:53:58

+0

爲我工作... – Jack 2012-04-16 23:50:15

回答

1

假設你要替換的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>"; 
?> 
0

你想讓他們從beigin.php到end.php嗎?看起來像你可以只是一個FORM提交到end.php並通過POST或GET變量傳遞變量。

更改用戶所在頁面(end.php,begin.php)的唯一方法是將它們鏈接到該頁面中的另一個頁面,這需要刷新頁面。

+0

或者一個'header(「位置:...「);'只要頭還沒有被髮送,就調用。 – 2012-04-16 22:58:56

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;