我有这个字符串:
$str="http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg";
是否有内置的php函数可以通过删除._SL110_.jpg
部分来缩短它,以便结果如下:
http://ecx.images-amazon.com/images/I/418lsVTc0aL
答案 0 :(得分:2)
不,没有任何内置的URL缩短php函数,如果你想做类似的事情,你可以使用子字符串或创建一个生成短链接的函数,并在数据库中的某处存储长值和短值,并仅显示简短的一个。
答案 1 :(得分:1)
嗯,这取决于你是否需要regexp替换(如果你不知道完整的值)或者你是否可以做一个简单的str_replace,如下所示:
$str = str_replace(".SL110.jpg", "", "http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg");
答案 2 :(得分:1)
您可以使用preg_replace()。
例如preg_replace("/\.[^\.]+\.jpg$/i", "", $str);
答案 3 :(得分:0)
不,它不是(至少不是直接)。此类URL缩短程序通常会生成唯一ID并记住您的原始URL和生成的ID。当您输入此类网址时,您会启动一个脚本,该脚本会查找给定的ID,然后重定向到目标网址。
如果您只想剪切字符串的某些部分,那么假设该文件名格式如您所示,只需查找第一个点和substr()
到该处。或
$tmp = explode('.', $filename);
$shortName = $tmp[0];
如果始终存在后缀._SL110_.jpg
,那么只需str_replace('._SL110_.jpg', '', $filename)
即可。
编辑
以上是仅限文件名的示例。整个代码是:
$url = "http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg";
$urlTmp = explode('/', $url);
$fileNameTmp = explode( '.', $urlTmp[ count($urlTmp)-1 ] );
$urlTmp[ count($urlTmp)-1 ] = $fileNameTmp[0];
$newUrl = implode('/', $urlTmp );
printf("Old: %s\nNew: %s\n", $url, $newUrl);
给出:
Old: http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg
New: http://ecx.images-amazon.com/images/I/418lsVTc0aL
答案 4 :(得分:0)
我建议使用:
$tmp = explode("._", $str);
然后使用$tmp[0]
作为您的目的,如果您确定要删除的部分始终用“._”(点 - 下划线)符号分隔。
答案 5 :(得分:0)
你可以这样做substr($data,0,strpos($data,"._"))
,如果你想要的是在“._”后删除所有内容。
答案 6 :(得分:0)
你可以尝试
$str = "http://ecx.images-amazon.com/images/I/418lsVTc0aL._SL110_.jpg";
echo "<pre>";
一个。
echo strrev(explode(".", strrev($str), 3)[2]) , PHP_EOL;
B中。
echo pathinfo($str,PATHINFO_DIRNAME) . PATH_SEPARATOR . strstr(pathinfo($str,PATHINFO_FILENAME),".",true), PHP_EOL;
下进行。
echo preg_replace(sprintf("/.[^.]+\.%s$/i", pathinfo($str, PATHINFO_EXTENSION)), null, $str), PHP_EOL;
输出
http://ecx.images-amazon.com/images/I/418lsVTc0aL