PHP爆炸字符串

时间:2014-03-21 10:49:00

标签: php explode

我有这个字符串:0|DY1497ORYOSLDY932OSLCPH|1|0|0

我需要像那样爆炸它:

0| DY1497 ORY OSL DY932 OSL CPH |1|0|0

$string1 = 'DY1497';
$string2 = 'ORY';
$string3 = 'OSL';
$string4 = 'DY932';
$string5 = 'OSL';
$string6 = 'CPH';

我进行了搜索,但所有我能找到的是当文本与/-等分开时如何爆炸。任何想法?

5 个答案:

答案 0 :(得分:9)

最好的选择可能是正则表达式:

if (preg_match('/|(.{6})(.{3})(.{3})(.{5})(.{3})(.{3})|/', $string, $matches)) {
    echo $matches[1];
    echo $matches[2];
    echo $matches[3];
    echo $matches[4];
    echo $matches[5];
    echo $matches[6];
}

这将字符串除以字符长度。您可能需要根据需要进行修改。见http://regular-expressions.info

答案 1 :(得分:2)

如果您知道所需字符的确切位置,我建议使用substr()

答案 2 :(得分:1)

儿子,它看起来就像你在这里搜索一些特定的标记。我认为你可以做的是,让你自己一个阵列,你可能会看起来很小的搜索模式。这里有类似的东西:

$patterns = array('ORY', 'OSL', 'CPH', 'DY[\d]+');

然后你可以让自己成为一个很好的大正则表达式:

$regexp = '/(' . implode('|', $patterns) . ')/';

然后,你要做的是,使用preg_match_all找到他们中的每一个fellers thisaway:

preg_match_all($regexp, $string, $matches);

现在,你这样做,然后看看你在$matches中得到了什么。我打赌它有你需要的东西。

答案 3 :(得分:0)

分割由固定长度字段组成的字符串的另一种方法是使用'解包'这非常适合这份工作。

这是一些经过测试的代码,用于演示它:

<?php

$origSource = '0|DY1497ORYOSLDY932OSLCPH|1|0|0';

// expected result
$string1 = 'DY1497';
$string2 = 'ORY';
$string3 = 'OSL';
$string4 = 'DY932';
$string5 = 'OSL';
$string6 = 'CPH';

// get the string we are interested in...
$tempStr = explode('|', $origSource);

$source = $tempStr[1]; // string with fixed length fields
/* debug */ var_dump($source);

// define where the fixed length fields are and the indexes to call them in the output array
$format = 'A6field1/' . 'A3field2/' . 'A3field3/'. 'A5field4/'. 'A3field5/'. 'A*field6/' ; // make it clear where the fields are...

$dest = unpack($format, $source);
/* debug */ var_dump($dest);

?>

答案 4 :(得分:-1)

首先,你必须用一个特殊的字符连接你的字符串,如#,#,$ etc ......

然后你可以爆炸它。


之后你可以在php中使用以下语法来爆发字符串......

<?php

$string= "0|$DY1497$ORY$OSL$DY932$OSL$CPH$|1|0|0";
$pieces = explode("$", $string);

?>

查看结果:---

<?php
foreach ($pieces as $value)
{
    echo "piece: $value<br />";
}
?>


我希望它会对你有所帮助。