PHP一次从字符串中删除多个内容


PHP removing several things from a string at once

我有一个这样的字符串输入到我的数据库中,在它被存储之前我不能格式化:

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);

试试代码