如何在PHP中修复格式不正确的URL?

如何在PHP中修复格式不正确的URL?,第1张

概述如何在PHP中修复格式不正确的URL?

使用PHP,我怎样才能自动修复一个格式不正确的url,如下所示:

/db/?param1=sas23456sdfd&param2=1368115104&parama3=more/resource or... /db?param1=sas23456sdfd&param2=1368115104&parama3=more/resource

并重新排列成这样的正确顺序?

/db/resource/?param1=sas23456sdfd&param2=1368115104&parama3=more or... /db/resource?param1=sas23456sdfd&param2=1368115104&parama3=more

在你问之前,格式不正确的URL的原因完全不在我的控制之下,是由一个客户端库引起的,坚持愚蠢地在原始查询string参数之后添加一个尾部的斜线和更多的端点。 幸运的是,我通过一个PHP反向代理脚本穿梭请求,所以我可以解决它。 请注意:

查询string可能存在也可能不存在

查询string有时可能被正确放置

查询string参数名称和值将会不同

查询string参数的数量可能会改变

查询string可能并不总是遵循“/”(db /?param = val或db?param = val)

格式不正确的URL将始终有一个“?param(s)= value /”模式

任何想法如何解决这个混乱的PHP?

除了白名单,Nginx全部改写为index.PHP

C# – 文件path的正则Expression式,例如C: test test.exe

Nginx块/拒绝访问多个位置的正则Expression式

使用ISAPI重写3从重写小节中排除目录

.htaccess不能只与Internet Explorer一起工作

剥离非字母数字字符的文件名称

用正则Expression式parsingwinerror.h&ntstatus.h状态/定义

find额外的空间/新行后closures?>(PHP标签)

Nginx匹配位置中的特定单词

Logstash grokfilter标记收到和反d的消息

更换或修复客户端库可能会更容易/更好,因为它没有做它应该做的事情(或者它是为不同的规范而设计的)。

但有一个正则表达式可以帮助你。

/(.*?)(/)?(?.*)(/.*)/

这与示例中格式错误的字符串匹配,并且与结果字符串不匹配。 在Rubular上查看工作演示。

你可以像这样使用它(虽然我不知道这是否是最好的方法来处理它,我宁愿修复输出,然后试图破碎的输入):

$matches = array(); $is_malformed = preg_match('/(.*?)(/)?(?.*)(/.*)/',$_SERVER['REQUEST_URI'],$matches); if($is_malformed) { $_SERVER['REQUEST_URI'] = $matches[1] . $matches[4] . $matches[2] . $matches[3]; }

在另外一个问题上 ,我更接近这个问题,在@Yogesh Suthar的帮助下提出了一个工作解决方案(欢迎改进):

$qs_match = array(); $is_malformed = preg_match('$?(.*?)/$s',$qs_match); if($is_malformed) { $uri_parts = explode('?',$_SERVER['REQUEST_URI']); //break apart at the first query string param //per https://stackoverflow.com/questions/4250794/simple-PHP-regex-question $_SERVER['REQUEST_URI'] = $uri_parts[0].preg_replace('/^[^/]*//','/',$uri_parts[1]).'?'.$qs_match[1]; //recombined but modifIEd part 2 }

总结

以上是内存溢出为你收集整理的如何在PHP中修复格式不正确的URL?全部内容,希望文章能够帮你解决如何在PHP中修复格式不正确的URL?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1277014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存