我有一个这样的字符串输入到我的数据库中,在存储之前我无法格式化:
image/upload/v1440427262/hglz466d8mm1pazysaoh.jpg#32e2e9a111a4f9f4aa01dbad2ca2aa403c994d28
我想要使用的字符串中唯一的部分是:
hglz466d8mm1pazysaoh.jpg
我正在尝试使用strpos删除多余的数据。
到目前为止,我已成功删除了包含标签
之后的所有内容($ data是原始字符串):
$dataclean = substr($data, 0, strpos($data, "#"));
这与$ dataclean返回时预期的效果如下:
image/upload/v1440427262/hglz466d8mm1pazysaoh.jpg
但我不知道如何删除剩余的多余数据:
image/upload/v1440427262/
此外,这一切都可以在一次点击中完成,还是必须分成几个操作?
答案 0 :(得分:6)
使用basename
:
$dataclean = basename(substr($data, 0, strpos($data, "#")));
答案 1 :(得分:1)
如问题中所述,首先使用
删除#
之后的值
$link = substr($data, 0, strpos($data, "#"));
然后使用basename()
函数从URL访问文件名。
例如,
$link = "http://example.com/folderPath/filename.php";
echo basename($link); // It will return filename.php
答案 2 :(得分:1)
如果basename()不起作用,我会用正斜杠来爆炸字符串。
$data = 'image/upload/v1440427262/hglz466d8mm1pazysaoh.jpg#32e2e9a111a4f9f4aa01dbad2ca2aa403c994d28';
$pieces = explode("/", $data);
$dataclean = substr($pieces[3], 0, strpos($data, "#"));
答案 3 :(得分:0)
substr + strpos
没有错,但看起来您的字符串是一个网址,因此您可以在使用basename
之前使用parse_url
隔离路径。只是另一种选择FYI。
basename(parse_url($yourString, PHP_URL_PATH));
答案 4 :(得分:0)