0

我必须使用正则表达式来获取最后一个“/”之后和“_completed”字符串之前的文本。

例如,如果我的输入是:

http://localhost/project-1/uploaded_images/output//11-03-2013+11-09-2013/Brian_Brown_completed.jpg 

我需要用 preg_match 输出“Brian Brown”吗?不幸的是,我无法弄清楚!那里的javascript也可以吗?

如果您需要更多说明,请告诉我!

编辑:

请注意,在输出中我没有下划线了!

提前谢谢了,

4

5 回答 5

1

使用 JavaScript

小提琴演示

var str = 'http://localhost/project-1/uploaded_images/output//11-03-2013+11-09-2013/Brian_Brown_completed.jpg ';
console.log(str.substring(str.lastIndexOf("/")+1).split('_completed')[0]);


参考

.lastindexof()

。分裂()

于 2013-11-11T16:45:35.203 回答
1

如果可以接受非正则表达式解决方案:

<?php
$url = 'http://localhost/project-1/uploaded_images/output//11-03-2013+11-09-2013/Brian_Brown_completed.jpg';
$test = basename($url, '_completed.jpg');
于 2013-11-11T16:45:37.287 回答
0
if (preg_match('~([^/]+)_completed\.jpg$~', $url, $match)) {
    echo $match[1];
}
于 2013-11-11T16:48:24.677 回答
0

PHP:

preg_match('#.*/(.*)_completed\.jpg$#', $input, $match); // Find the name
$name = str_replace('_', ' ', $match[1]); // Convert underscores to spaces

Javascript:

name = /.*\/(.*)_completed\.jpg$/.exec(input)[1].replace(/_/, ' ');
于 2013-11-11T16:49:00.587 回答
0

这应该这样做:

$s = str_replace ("_", " ", substr ( $s, strrpos($s, "/")+1, strrpos($s, "_completed")-strrpos($s, "/")-1 )) ;
于 2013-11-11T16:49:05.853 回答