我有一个这样的字符串输入到我的数据库中,在它被存储之前我不能格式化:
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/
还有,这一切可以一次完成还是必须分成几个操作?
使用basename
:
$dataclean = basename(substr($data, 0, strpos($data, "#")));
如果basename()不起作用,我将通过正斜杠爆炸字符串。
$data = 'image/upload/v1440427262/hglz466d8mm1pazysaoh.jpg#32e2e9a111a4f9f4aa01dbad2ca2aa403c994d28';
$pieces = explode("/", $data);
$dataclean = substr($pieces[3], 0, strpos($data, "#"));
如问题所述,首先使用
删除#
后面的值 $link = substr($data, 0, strpos($data, "#"));
然后使用basename()
函数从URL访问filename
$link = "http://example.com/folderPath/filename.php";
echo basename($link); // It will return filename.php
substr + strpos
没有问题,但看起来您的字符串是一个URL,因此您可以在使用basename
之前使用parse_url
来隔离路径。仅供参考。
basename(parse_url($yourString, PHP_URL_PATH));
您可以使用regex函数:
preg_match("/[a-z0-9]+'.[a-z]{3}/i", $input_line, $output_array);
试试代码