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, "#")));
如问题中所述,首先使用
删除 #
之后的值
$link = substr($data, 0, strpos($data, "#"));
然后使用basename()
函数从URL访问文件名。
例如,
$link = "http://example.com/folderPath/filename.php";
echo basename($link); // It will return filename.php
如果 basename() 不起作用,我会用正斜杠分解字符串。
$data = 'image/upload/v1440427262/hglz466d8mm1pazysaoh.jpg#32e2e9a111a4f9f4aa01dbad2ca2aa403c994d28';
$pieces = explode("/", $data);
$dataclean = substr($pieces[3], 0, strpos($data, "#"));
substr + strpos
没有问题,但看起来您的字符串是 URL,因此您可以在使用 basename
之前使用 parse_url
来隔离路径。仅供参考。
basename(parse_url($yourString, PHP_URL_PATH));
您可以使用正则表达式函数:
preg_match("/[a-z0-9]+\.[a-z]{3}/i", $input_line, $output_array);
我有一个像这样的字符串被输入到我的数据库中,但在存储之前我无法对其进行格式化:
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, "#")));
如问题中所述,首先使用
删除#
之后的值
$link = substr($data, 0, strpos($data, "#"));
然后使用basename()
函数从URL访问文件名。
例如,
$link = "http://example.com/folderPath/filename.php";
echo basename($link); // It will return filename.php
如果 basename() 不起作用,我会用正斜杠分解字符串。
$data = 'image/upload/v1440427262/hglz466d8mm1pazysaoh.jpg#32e2e9a111a4f9f4aa01dbad2ca2aa403c994d28';
$pieces = explode("/", $data);
$dataclean = substr($pieces[3], 0, strpos($data, "#"));
substr + strpos
没有问题,但看起来您的字符串是 URL,因此您可以在使用 basename
之前使用 parse_url
来隔离路径。仅供参考。
basename(parse_url($yourString, PHP_URL_PATH));
您可以使用正则表达式函数:
preg_match("/[a-z0-9]+\.[a-z]{3}/i", $input_line, $output_array);