我需要通过一个sql文件搜索并找到该URL包含/assets/
的文件名(URL的结尾)
示例网址:
https://www.example.com/assets/screenshots/this-is-an-example/2016-12-20_15-42-29.png
其中包含/assets/
,所以我想获取网址的最后一部分,即:
2016-12-20_15-42-29.png
另一个例子:
https://www.example.com/images/screenshots/this-is-an-example/2016-12-20_15-42-29.png
什么也不会返回,因为找不到/assets/
。
*深入的目录数将有所不同,因此可能是/assets/dir1/dir2/filename.jpg
,下一个可能是/assets/dir1/dir2/dir3/dir4/filename.jpg
希望这可以使用正则表达式来完成。
答案 0 :(得分:1)
如概述所示,basename()
将是解决此问题的好方法。
但是,如果您喜欢这种方式(或需要将其应用于某种防火墙模式字段),则可以使用正则表达式:
@^.*?/assets/.*?/([^/]+\.\w{3})$@
(请注意,定界符@
会导致模式包含很多/
-您可以坚持使用/
作为定界符,但随后必须转义每个{{1} })。
答案 1 :(得分:1)
尝试一下:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
</head>
<body>
<div id="result"></div>
</body>
</html>
<script>
if (typeof (EventSource) !== undefined)
{
document.getElementById("result").innerHTML += "SSE supported" + "<br>";
}
else
{
document.getElementById("result").innerHTML += "SSE NOT supported" + "<br>";
}
var source = new EventSource("http://localhost:32123/");
source.onopen = function ()
{
document.getElementById("result").innerHTML += "open" + "<br>";
};
source.onerror = function ()
{
document.getElementById("result").innerHTML += "error" + "<br>";
};
source.onmessage = function (event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
</script>
将检查URL中是否存在搜索字符串 / assets / 。
如果确实存在,它将从提供的var net = new brain.recurrent.LSTMTimeStep();
net.train([
[1, 3],
[2, 2],
[3, 1],
]);
var output = net.run([[1, 3], [2, 2]]); // [3, 1]
中的URL返回搜索字符串的位置。
如果不是,它将返回false。
在这里,我使用三元运算符(if else语句的缩写)来评估条件。如上所述,如果搜索字符串存在,它将通过函数strpos()
返回路径($url
)的文件名,否则,如果找不到搜索字符串,则返回空。
$url
答案 2 :(得分:1)
您可以使用以下正则表达式:
^(?=.*\/assets\/).*\/\K.*$
^
声明字符串开头的位置。(?=.*\/assets\/)
正向查找,以确保字符串中包含/assets/
子字符串。.*
贪婪地匹配任何东西。\/
匹配最后一个/
。\K
重置运算符,重置匹配。.*$
匹配所有内容,直到字符串$
的结尾。您可以here试试。
Php片段:
<?php
$url = 'https://w...content-available-to-author-only...e.com/assets/screenshots/this-is-an-example/2016-12-20_15-42-29.png';
preg_match('/^(?=.*\/assets\/).*\/\K.*$/',$url,$matches);
print_r($matches[0]);
打印:
2016-12-20_15-42-29.png
您可以here试试。