如何在PHP中使用preg_replace删除url的结尾

时间:2012-03-03 02:37:28

标签: php preg-replace

我有这样的代码:

http://domain.com/link.aspx?r=test5&id=3726&location=24&sublocation=

我想知道如何删除& sublocation =以及可能之后的任何内容并使代码看起来像这样:

http://domain.com/link.aspx?r=test5&id=3726&location=24

我需要使用preg_replace函数:

所以我需要这样的东西:

<?php
$host = $_GET['host'];
$ch = curl_init($host);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
echo preg_replace('/<link>(*.?)&sublocation=*<\/link>/', '<link> '$1' </link>', $response);

&GT;

我只需要一些帮助来修复我编写的preg_replace命令。

谢谢

2 个答案:

答案 0 :(得分:1)

只是一个替代答案。它不使用preg_replace,只使用substrstrpos

$url  = "http://domain.com/link.aspx?r=test5&id=3726&location=24&sublocation=";
$url2 = substr($url, 0, strpos($url, '&sublocation='));
echo $url2;

输出

http://domain.com/link.aspx?r=test5&id=3726&location=24

说明:

strpos($url, '&sublocation=')将返回“&amp; sublocation =”字符串的位置。然后使用从0到该位置的substr,将剪切原始字符串。

答案 1 :(得分:0)

将您的*&sublocation=*)更改为.*。在正则表达式中,*表示“前面符号中的0或更多”。在您的情况下,您有=*,这意味着“0或更多=符号”。

当您使用.*时,它表示“0或更多任何字符(换行符除外)”,因为.表示“任何字符(换行符除外)”*


(*除非您输入DOTALL标志(s))