我有一个绝对 URL 列表。我需要确保它们都有尾随斜杠(如果适用)。所以:
- http://www.domain.com/ http://www.domain.com/
- http://www.domain.com http://www.domain.com
- http://www.domain.com/index.php http://www.domain.com/index.php
- http://www.domain.com/?message=hello http://www.domain.com/?message=hello
我猜我需要使用正则表达式,但匹配 URL 很痛苦。希望有一个更简单的解决方案。有想法吗?
对于这个非常具体的问题,根本不使用正则表达式也可能是一种选择。如果您的列表很长(几千个 URL)并且时间很重要,您可以选择手动编码这个非常简单的操作。
这将执行相同的操作:
$str .= (substr($str, -1) == '/' ? '' : '/');
这是当然的挺远的与正则表达式一样优雅或灵活,但它避免了解析正则表达式字符串的开销,并且它的运行速度与 PHP 的速度一样快。
可以说它的可读性不如正则表达式,尽管这取决于读者对正则表达式语法的适应程度(有些人实际上可能会发现它更具可读性)。
它肯定不会检查该字符串是否确实是一个格式良好的 URL(例如 zerkms 的正则表达式),但您已经知道您的字符串无论如何都是 URL,所以这有点多余。
不过,如果您的列表大约有 10 或 20 个 URL,请忘记这篇文章。使用正则表达式,差异将为零。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)