如何使用php来爆炸字符串,删除多余的字符

时间:2015-03-20 13:24:19

标签: php arrays string echo explode

我已经使用PHP一段时间了,遇到了将字符串转换为数组(爆炸)的问题,然后简单地删除每个元素周围的系统输出字符并不容易实现。

我有一串需要处理输出的类别:

2;#Ecosystems;#3;#Core Science Systems (CSS);#4;#Energy and Minerals;#5;#Director

我在下面尝试了以下特定代码:

$text = "2;#Ecosystems;#3;#Core Science Systems (CSS);#4;#Energy and Minerals;#5;#Director";
$explode = explode('#' ,  $text);
foreach ($explode as $key => $value)
{
    ob_start();
    echo ''.$value.''; 
    $myStr = ob_get_contents();
    ob_end_clean();

}
echo "$myStr"

返回的唯一元素是:

 Director

有人能指出我正确的方向吗?我想查看这样的字符串:

Ecosystems; Core Science Systems (CSS); Energy and Minerals; Director

7 个答案:

答案 0 :(得分:1)

你的问题与问题无关,你用每个foreach迭代覆盖你的缓冲区,修复是

  

$ myStr . = ob_get_contents();

答案 1 :(得分:1)

对于这个确切的示例,您可以将爆炸更改为拆分;#

$text = "2;#Ecosystems;#3;#Core Science Systems (CSS);#4;#Energy and Minerals;#5;#Director";
$categories = array();
$explode = explode(';#' ,  $text);
foreach ($explode as $key => $value)
{
    if (!is_numeric($value)) {
        $categories[] = $value;
    }
}
echo implode("; ", $categories);

答案 2 :(得分:1)

$myStr = ob_get_contents();

这将取代$ myStr。您可能想要做的就是添加它:

$myStr .= ob_get_contents();

虽然查看了您所需的输出,但您的代码无法达到您想要的效果,因为您并未删除前面的部分,例如#1;

试试这个

$text = "2;#Ecosystems;#3;#Core Science Systems (CSS);#4;#Energy and Minerals;#5;#Director";
$text = preg_replace('/(#?[0-9];#)/', ' ', $text);
echo $text;

输出:Ecosystems; Core Science Systems (CSS); Energy and Minerals; Director

答案 3 :(得分:0)

原因是你将ob_start()和ob_end_clean()放在循环中。把它们放在循环外面:

ob_start();
foreach ($explode as $key => $value)
{
   echo ''.$value.''; 
   $myStr = ob_get_contents();
}
ob_end_clean();
echo "$myStr";

答案 4 :(得分:0)

我会使用preg_split并按照这样做:

$result = implode(' ', preg_split('/#?\d+;#/', $text, null, PREG_SPLIT_NO_EMPTY));

答案 5 :(得分:0)

这解决了问题,你可以微调输出:

$text = "2;#Ecosystems;#3;#Core Science Systems (CSS);#4;#Energy and Minerals;#5;#Director";
$explode = explode('#' ,  $text);
$myStr = '';
foreach ($explode as $key => $value)
{
  $myStr .= $value;
}
echo "$myStr"

答案 6 :(得分:-1)

$ arr = explode(“#”,$ text);

然后您可以用不同的方式回显数组

echo $ arr [0]< =数字代表数组值的索引。