我正在开发一个小型的hoppy项目,我希望在该项目中替换URL上的特定页面。让我解释一下:
我有网址 http://www.mydomain.com/article/paragraph/low/
我想保留网址,但用 / high / 替换最后一段 / low / ,以便新网址为:
http://www.mydomain.com/article/paragraph/high/
我尝试过不同的爆炸,分裂和拼接,但我似乎无法绕过它并让它发挥作用。我可以更改整个网址,但不仅仅是最后一个网段,并将其保存在新变量中 我非常有信心这是一个相当直接的案例,但我从来没有在PHP中使用数组/字符串操作那么多,所以我很丢失。
我想我必须首先将URL拆分成段,使用“\”分隔它(我试过但是通过使用explode(“\”,$ string)来解决问题)然后替换掉最后的\低\用\高\
希望有人可以帮助或指出我使用哪种方法来做正确的方向。
施
Mestika
答案 0 :(得分:3)
你为/.
取了\$url = explode('/', rtrim($url, '/'));
if (end($url) == 'low') {
$url[count($url)-1] = 'high';
}
$url = implode('/', $url) .'/';
答案 1 :(得分:3)
str_replace怎么样?
<?php
$newurl = str_replace('low', 'high', $oldurl);
?>
文件; http://php.net/manual/en/function.str-replace.php
编辑; Rik是对的;如果您的域名(或该网址的任何其他部分)包含字符串“low”,这将搞乱您的链接。 所以:如果你的网址可能包含多个“低”,你必须在脚本中添加一个额外的指标。一个例子就是在str_replace中包含/。
答案 2 :(得分:1)
<?php
class TestURL extends PHPUnit_Framework_TestCase {
public function testURL() {
$URL = 'http://www.mydomain.com/article/paragraph/low/';
$explode = explode('/', $URL);
$explode[5] = 'high';
$expected = 'http://www.mydomain.com/article/paragraph/high/';
$actual = implode('/', $explode);
$this->assertEquals($expected, $actual);
}
}
-
phpunit simple-test.php
PHPUnit 3.4.13 by Sebastian Bergmann.
.
Time: 0 seconds, Memory: 4.75Mb
OK (1 test, 1 assertion)
答案 3 :(得分:1)
答案 4 :(得分:0)
这可能就足够了:
$url = "http://www.mydomain.com/article/paragraph/low/";
$newUrl = str_replace('/low/', '/high/', $url);
或使用正则表达式(它允许更大的灵活性)
$url = "http://www.mydomain.com/article/paragraph/low/";
$newUrl = preg_replace('/low(\/?)$/', 'high$1', $url);
请注意,字符串方法将替换任何low
段,并且只有后面跟/
。正则表达式方法只有在它是最后一个段时才会替换low
,并且后面可能没有/
。