Php 将foreach结果拆分为可重用变量

Php 将foreach结果拆分为可重用变量,php,foreach,split,var,Php,Foreach,Split,Var,我有一个foreach函数: foreach ($result as $result) { echo "<a href='" . $result . "'>" . $result . "</a><br>"; } 我尝试了explode和split函数,但这会不断返回以下内容的完整列表: array array 我想要实现的是让foreach$result有一个变量,该变量包含单词/名称,介于第一组[]和第二组[]之间,然后是第三个变量,该变量包含最后一

我有一个foreach函数:

foreach ($result as $result) {
  echo "<a href='" . $result . "'>" . $result . "</a><br>";
}
我尝试了
explode
split
函数,但这会不断返回以下内容的完整列表:

array
array
我想要实现的是让
foreach$result
有一个变量,该变量包含单词/名称,介于第一组
[]
和第二组
[]
之间,然后是第三个变量,该变量包含最后一组
.
.wav
之间的所有内容。因此它将有以下变量:

$result_classname = spacer
$result_parent = timespacer
$result_name = fiveseconds
$result = [spacer]_[timespacer]_fiveseconds.wav
这将允许我做:

foreach ($result as $result) {
  echo "<a class='" . $result_classname . "' href='" . $result . "'>" . $result_name . "</a><span>" . $result_parent . "</span><br>";
}
foreach($result as$result){
回显“$result\u parent.”
; }

如何实现这一点?

首先,您不希望在
foreach
中使用相同的变量:

foreach ($result as $result) {
使用不同的变量:

foreach ($result as $value) {
然后,这里有一个非正则表达式的方法来处理这个问题:

list($classname, $parent, $name) = explode('_', $value);
$classname = trim($classname, '[]');
$parent    = trim($parent, '[]');
$name      = pathinfo($name, PATHINFO_FILENAME);
  • 在下划线上爆炸
  • 从每一端修剪
    []
    字符
  • 获取不带扩展名的文件名
或者一个简单的正则表达式:

preg_match('/\[([^\]]+)\]_\[([^\]]+)\]_([^.]+).*/', $value, $matches);

然后使用
print\r($matches)
查看要使用哪些变量(
$matches[0]
等)。

首先,您不希望在
foreach中使用相同的变量:

foreach ($result as $result) {
使用不同的变量:

foreach ($result as $value) {
然后,这里有一个非正则表达式的方法来处理这个问题:

list($classname, $parent, $name) = explode('_', $value);
$classname = trim($classname, '[]');
$parent    = trim($parent, '[]');
$name      = pathinfo($name, PATHINFO_FILENAME);
  • 在下划线上爆炸
  • 从每一端修剪
    []
    字符
  • 获取不带扩展名的文件名
或者一个简单的正则表达式:

preg_match('/\[([^\]]+)\]_\[([^\]]+)\]_([^.]+).*/', $value, $matches);

然后使用
print\r($matches)
查看要使用的代码(
$matches[0]
,等等)。

嘿,我刚刚试过你的代码!它正在部分发挥作用。我确信是我做错了什么。我将您的代码添加到
foreach
中,在
echo
上方,它现在正确显示了名称,但父类名称不正确。我将上传的代码在主要文章,因为它是现在。所以它比我的胡言乱语更容易理解;-)我犯了愚蠢的错误。检查新的
trim()
行。我选择了preg匹配,它工作得非常完美。也尝试了其他方法,但链接给了我
数组
,而不是链接。我要感谢你重做了你最初的回答,显然是你帮助我解决了这个问题。非常感谢你!还要用那些新的
trim()
行来尝试它。另外,确保在foreach和之后的所有行中使用
$value
。嘿,我刚刚尝试了你的代码!它正在部分发挥作用。我确信是我做错了什么。我将您的代码添加到
foreach
中,在
echo
上方,它现在正确显示了名称,但父类名称不正确。我将上传的代码在主要文章,因为它是现在。所以它比我的胡言乱语更容易理解;-)我犯了愚蠢的错误。检查新的
trim()
行。我选择了preg匹配,它工作得非常完美。也尝试了其他方法,但链接给了我
数组
,而不是链接。我要感谢你重做了你最初的回答,显然是你帮助我解决了这个问题。非常感谢你!还要尝试使用那些新的
trim()
行。另外,确保在foreach和之后的所有行中使用
$value