Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP字符串空白格式 $str=“测试艺术家测试-测试标题测试”; $trackinfo=preg_split('/-/',$str); exec('metamp3--title'.$trackinfo[1].--artist'.$trackinfo[0].'track.mp3');_Php - Fatal编程技术网

PHP字符串空白格式 $str=“测试艺术家测试-测试标题测试”; $trackinfo=preg_split('/-/',$str); exec('metamp3--title'.$trackinfo[1].--artist'.$trackinfo[0].'track.mp3');

PHP字符串空白格式 $str=“测试艺术家测试-测试标题测试”; $trackinfo=preg_split('/-/',$str); exec('metamp3--title'.$trackinfo[1].--artist'.$trackinfo[0].'track.mp3');,php,Php,这是我正在使用的代码的一部分,基本上我显然做错了什么(我对PHP很陌生,不太了解使用的一些约定。当我运行这一行时,从我所看到的,它只会对标题和艺术家进行测试和测试(就像它只从字符串中取第一个单词)但是如果我要做像这样的事情 $str = "Test Artist Test - Test Title Test"; $trackinfo = preg_split('/-/', $str); exec('metamp3 --title '.$trackinfo[1].' --artist '.$

这是我正在使用的代码的一部分,基本上我显然做错了什么(我对PHP很陌生,不太了解使用的一些约定。当我运行这一行时,从我所看到的,它只会对标题和艺术家进行测试和测试(就像它只从字符串中取第一个单词)但是如果我要做像这样的事情

$str = "Test Artist Test - Test Title Test"; $trackinfo = preg_split('/-/', $str); exec('metamp3 --title '.$trackinfo[1].' --artist '.$trackinfo[0].' track.mp3'); 打印$trackinfo; 打印$trackinfo[1]; 打印$trackinfo[0]; 我可以清楚地看到分割字符串的格式是正确的,我想知道是否有人可以解释这里到底发生了什么,我将如何着手修复它

谢谢!

尝试添加引号:

print_r $trackinfo; print $trackinfo[1]; print $trackinfo[0]; 尝试添加引号:

print_r $trackinfo; print $trackinfo[1]; print $trackinfo[0];
这不是PHP问题。您正在将以下字符串传递给exec:

exec('metamp3 --title "'.$trackinfo[1].'" --artist "'.$trackinfo[0].'" track.mp3');
但是metamp3程序将只为每个参数取第一个字。该命令应类似于
metamp3--title“Test title Test”…
(引号中的参数值)

PHP中有一个函数可以解决此问题:。以下是您的代码的外观:

metamp3 --title Test Title Test --artist Test Artist Test track.mp3

这不是PHP问题。您正在将以下字符串传递给exec:

exec('metamp3 --title "'.$trackinfo[1].'" --artist "'.$trackinfo[0].'" track.mp3');
但是metamp3程序将只为每个参数取第一个字。该命令应类似于
metamp3--title“Test title Test”…
(引号中的参数值)

PHP中有一个函数可以解决此问题:。以下是您的代码的外观:

metamp3 --title Test Title Test --artist Test Artist Test track.mp3

如果歌曲名中有
符号,这将失败。@Ivan Nevostruev,是的,你是对的!你的决定更好。如果歌曲名中有
符号,这将失败。@Ivan Nevostruev,是的,你是对的!你的决定更好。你真棒,先生,我想(希望如此)有办法解决这个问题,但我不知道有什么解决办法。谢谢你,太感谢了!你太棒了,先生,我想(希望)会有办法解决这个问题,但我不知道有什么解决办法。谢谢你,太感谢了!