如何摆脱分隔符?

时间:2013-08-28 09:23:49

标签: php string parsing

案例1: 我有一个字符串“57_5”。我如何取出下划线(_),据说(我认为)作为分隔符,以便我可以 57 5 ?这两个值应该是INTEGERS NOT STRING !!!我需要在PHP中执行此操作

案例2: 我有一个数组(“57_8”,“45_7”,“24_3”)。我需要获取数组中的每个元素,取出下划线然后将它们转换为 INTEGERS ,所以总共我应该有8个不同的值。如何在PHP中实现这一目标?我应该有类似 57,8,45,7,24,3 的东西。记住最终结果不应该是数组,值应该是INTEGERS。

2 个答案:

答案 0 :(得分:3)

正如评论中所写,这是一个变体,“implode explode intval array_map所有的东西”

$integers = array_map('intval', explode('_', implode('_', (array) $arrayOrString)));

由于强制转换,它通过规范化输入一次处理两种情况。

代码示例:

<?php
/**
 * How do I get rid of the delimiters?
 * @link http://stackoverflow.com/q/18484012/367456
 */

$cases = [
    1 =>  "57_5",
    2 => array ("57_8", "45_7", "24_3"),
];

foreach ($cases as $num => $case)
{    
    $integers = array_map('intval', explode('_', implode('_', (array) $case)));
    echo 'Case #', $num, ': ', var_dump($integers), "\n";
}

节目输出:

Case #1: array(2) {
  [0]=> int(57)
  [1]=> int(5)
}

Case #2: array(6) {
  [0]=> int(57)
  [1]=> int(8)
  [2]=> int(45)
  [3]=> int(7)
  [4]=> int(24)
  [5]=> int(3)
}

请参阅Online Demo

答案 1 :(得分:0)

如果你有一个57_5的字符串并取出下划线你可以这样做:

ex1=str_explode("_",$string);

然后你会:

$ ex1 [0]将为57而$ ex1 [1]将为5