如何使用 php 删除 #id=756?
?_otherstuff_#id=756'
我试过了,substr()
但它没有正常工作。谢谢你的帮助。
$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
您可以使用 可以将 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
如果您想根据问题标题删除哈希
$str = "?_otherstuff_#id=756'";
$newstr = str_replace("#","", $str);
您也可以使用substr解决它。
给你substr
:
$a = '?_otherstuff_#id=756';
$var = substr($a, 0, strpos($a, "#"));