我必须使用正则表达式来获取最后一个“/”之后和“_completed”字符串之前的文本。
例如,如果我的输入是:
http://localhost/project-1/uploaded_images/output//11-03-2013+11-09-2013/Brian_Brown_completed.jpg
我需要用preg_match输出“Brian Brown”吗?不幸的是我无法理解!那个javascript怎么样呢?
如果您需要更多说明,请告诉我们!
编辑:
请注意,在输出中我不再有下划线了!
非常感谢,
答案 0 :(得分: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]);
<小时/> 参考
答案 1 :(得分: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');
答案 2 :(得分:0)
if (preg_match('~([^/]+)_completed\.jpg$~', $url, $match)) {
echo $match[1];
}
答案 3 :(得分: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(/_/, ' ');
答案 4 :(得分:0)
这应该做:
$s = str_replace ("_", " ", substr ( $s, strrpos($s, "/")+1, strrpos($s, "_completed")-strrpos($s, "/")-1 )) ;