-3

如何使用 php 删除 #id=756?

?_otherstuff_#id=756'

我试过了,substr()但它没有正常工作。谢谢你的帮助。

4

4 回答 4

2
$my_string = str_replace('#id=756', '', $my_string);

或者使用正则表达式匹配每个ID;

$my_string = preg_replace('/\#id=\d+/', '', $my_string);

或者只删除散列,并且只在那个地方(这样它就不会意外匹配在你的 URL 中浮动的其他散列);

$my_string = preg_replace('/_otherstuff_#/', '_otherstuff_', $my_string)

这是一个具有 omega-overkill 的,但为了展示可能性:

$counter = 0;

$my_string = '?_otherstuff_#id=756&_otherstuff_#id=912';

$my_string = preg_replace_callback('/_otherstuff_#/', function($matches) {
    $GLOBALS['counter']++;

    echo ($matches[0]).' (repacement nr. '.$GLOBALS['counter'].')<br />';

    return '_otherstuff_';
}, $my_string);

echo '<br />'.$my_string;

输出

_otherstuff_# (repacement nr. 1)
_otherstuff_# (repacement nr. 2)

?_otherstuff_id=756&_otherstuff_id=912
于 2013-04-10T10:58:52.007 回答
2

您可以使用 可以将 url 拆分为的parse_url

scheme - e.g. http
host
port
user
pass
path
query - after the question mark ?
fragment - after the hashmark #

删除片段后可以通过http://us1.php.net/manual/en/function.http-build-url.php构建 urlhttp_build_url

于 2013-04-10T11:07:22.420 回答
1

如果您想根据问题标题删除哈希

$str =  "?_otherstuff_#id=756'";

$newstr = str_replace("#","", $str);
于 2013-04-10T11:00:57.093 回答
1

您也可以使用substr解决它。

给你substr

$a = '?_otherstuff_#id=756';
$var = substr($a, 0, strpos($a, "#"));
于 2013-04-10T11:05:45.277 回答