在' - '之后检测','并在字符串停止后再次执行它,怎么做?

时间:2015-05-10 22:38:22

标签: php substr

我有一个字符串看起来像这样:

  

土绿色,随意的东西,咖啡的东西,另一个标签

我正在尝试删除“ - ”后面的所有内容,但是当检测到“,”或“”时,请停止并重做该过程,以便传出的字符串变为

  

地球随机咖啡另一个

substr($func, 0, strrpos($func, '-'));

首先删除所有内容' - '

2 个答案:

答案 0 :(得分:3)

最简单的方法是使用explode(通过拆分字符将字符串转换为数组),所以用逗号分隔

http://php.net/explode

然后对于该数组中的每个项目,在连字符上拆分并获取第一个元素。

然后你可以将物品与内爆(爆炸的对面)粘合在一起

http://php.net/implode

这假设没有无关的逗号或其他并发症

$str = 'earth-green, random-stuff, coffee-stuff, another-tag';
$arr = explode(',', $str);
$out_arr = array();  // will put output values here

foreach ($arr as $elem) {
  $elem = trim($elem); // get rid of white space)
  $arr2 = explode('-', $elem);
  $out_arr[] = $arr2[0]; // get first element of this split, add to output array
}

echo implode(' ', $out_arr);

答案 1 :(得分:1)

稍微不同的方法,使用带有匿名函数的array_walk来迭代而不是foreach。

<?php
$str = 'earth-green, random-stuff, coffee-stuff, another-tag';
$arr = explode(',', $str);
array_walk($arr, function( &$value, $index ) {
    $sub = explode('-', trim($value));
    $value = $sub[0];
});
var_dump($arr);