如何从PHP中提取用户提交的URL中的特定区域

时间:2018-01-28 16:10:55

标签: php

这可能很容易,但我只想提取用户将进入某个字段的网址的突出显示区域。它始终位于结束/?

之间

注意:

为了澄清,这只是一个粘贴的简单文本输入字段。我不需要修改页面网址。

用户字段网址

<?php $url = 'https://example.com/test/5tPa414MNG1cNfGjJs1Jr?si=tKTd7qJQ1Sda1ZUWoA5Q'; ?>

我需要提取的内容

https://example.com/test/ 5tPa414MNG1cNfGjJs1Jr?SI = tKTd7qJQ1Sda1ZUWoA5Q

仅限代码块部分。

结束结果

<?php $extracted = '5tPa414MNG1cNfGjJs1Jr'; ?>

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

preg_match("/(?<=\/)(\w+)(?=\?)/", $url, $match);
echo $match[0];

答案 1 :(得分:1)

你可以在其他答案中使用正则表达式,但它们会消耗性能,在这种情况下不是强制性的。 在这里,我要在&#39; /&#39;上拆分网址。性格,我把最后一部分。然后我从最后一部分的开头选择一个子字符串到&#39;?&#39;。

<?php
$url = 'https://example.com/test/5tPa414MNG1cNfGjJs1Jr?si=tKTd7qJQ1Sda1ZUWoA5Q';
//Explode the URL on the /
$urlParts = explode('/', $url);
//Get the last part
$lastItem = end($urlParts);
$extracted = substr($lastItem, 0, strpos($lastItem, '?'));

此解决方案提供与其他解决方案相同的结果,但它不使用正则表达式。