gpt4 book ai didi

PHP在带有URL的字符串中添加空格

转载 作者:行者123 更新时间:2023-12-04 23:21:56 26 4
gpt4 key购买 nike

问题
我有一个临时 url 可以从 AWS-S3 访问对象

$source = "http://mybucket...";
如果我执行 var_dump($source) 它会显示正确的 URL
string(407) "https://mybucket.s3.amazonaws.com/storage/..."
所以我尝试以这种方式在ffmpeg命令中使用这个url(ffmpeg中需要双引号)
$cmd = 'ffmpeg -i "' . $source . '" ...
shell_exec($cmd);
这不起作用,当我执行 var_dump($cmd) 时,url 显示如下( https:// 之间的空格)
 "https: //mybucket.s3.amazonaws.com/storage/..."
当我使用 S3 协议(protocol)指定 url 时它工作正常
"s3://mybucket...."
所以也许问题出在https协议(protocol)上
我试过的 (它没有工作)
  • 我试过$url = str_replace(' ', '', $source);
  • 我试过$url = str_replace('%20', '', $source);
  • 我试过$url = str_replace('https: //', 'https://', $source);
  • 我试过$url = preg_replace("/\s+/", "", $source);
  • 我试过addslashes($source)而是 '"' . $source . '"'
  • 我试过$url = escapeshellarg($source);

  • 我正在使用的
  • PHP 7
  • Laravel 4
  • AWS-S3
  • 最佳答案

    为什么不使用 sprintf ?!
    我尝试过并且像冠军一样工作!

    $source = "https://mybucket.s3.amazonaws.com/storage/...";
    $cmd = sprintf('ffmpeg -i "%s"', $source);

    $array = [
    'source' => $source,
    'cmd' => $cmd
    ];

    echo '<pre>'; print_r($array); echo '</pre>';
    echo '<pre>'; var_dump($array); echo '</pre>';
    结果是:
    Array
    (
    [source] => https://mybucket.s3.amazonaws.com/storage/...
    [cmd] => ffmpeg -i "https://mybucket.s3.amazonaws.com/storage/..."
    )
    array(2) {
    ["source"]=>
    string(45) "https://mybucket.s3.amazonaws.com/storage/..."
    ["cmd"]=>
    string(57) "ffmpeg -i "https://mybucket.s3.amazonaws.com/storage/...""
    }

    关于PHP在带有URL的字符串中添加空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64024981/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com