[英]How to remove part of URL
假设我的网址是这样的:
http://example.com/forum/index.php?topic=53.msg251#msg251
这一部分,我不知道如何删除:
.msg251#msg251
虽然我确实尝试过,但是我不确定自己是否接近正确执行。
$linkraw = $items->link;
$linkpattern = '/^.msg247#msg247/';
$link = preg_match($linkpattern, $linkraw);
正确的做法是什么? 我在尝试学习。
字符串函数strrpos和substr足以完成此任务。 而且肯定更快。
$link = substr($linkraw, 0, strrpos($linkraw, "."))
strrpos
找到的位置.
从字符串的末尾开始。 substr
提取一个子字符串,直到位置.
在上一步中找到。 适用于http://example.com/forum/index.php?topic=53.msg251#msg251
适用于http://example.com/forum/index.php?topic=53.new#new
但不在 http://example.com/forum/index.php?topic=53.msg251#msg251.new#new
如果要删除,请使用preg_replace :
$link = preg_replace('/\..*?$/', '', $linkraw);
使用http_build_url
函数非常简单(需要PECL pecl_http> = 0.21.0)。
<?php
$url = 'http://example/forum/index.php?topic=53.msg251#msg251';
echo http_build_url($url, null, HTTP_URL_STRIP_FRAGMENT);
?>
“ preg_match()返回模式匹配的次数。这将是0次(不匹配)或1次,因为preg_match()将在第一个匹配之后停止搜索。相反,preg_match_all()将继续直到到达结尾如果发生错误,则preg_match()返回FALSE。”
Preg_Match仅检查模式是否存在于字符串中。 它不会删除任何东西。
您可以使用str_replace()替换该部分
$link = str_replace(".msg251#msg251", "", $linkraw);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.