可以在PHP中爆炸帮助我分裂两个因素吗?

时间:2014-02-08 18:23:43

标签: php

通常:

$data = 'hello world&cool&stuff&here';

$explode = explode('&', $data); // returns array with hello world, cool, stuff, here

现在这个数据

$data = 'hey this is a beautiful day #content_start#The World is Beautiful#content_end#';

如何从上面的字符串中提取“世界是美丽的”?

运行explode('#content_start', $data);然后explode('#content_end', $data);?或者是否有更简单,更合适的方式。

5 个答案:

答案 0 :(得分:1)

你的想法会完美无缺。

就这样做:

$data = 'hey this is a beautiful day #content_start#The World is Beautiful#content_end#';
$first = explode('#content_start#', $data);
$second = explode('#content_end#', $first[1]);
echo $second[0];

第一次爆炸将返回一个字符串数组,其中第一个($first[0])将为hey this is a beautiful day,第二个($first[1])将为The World is Beautiful#content_end#。然后你可以使用第二次爆炸来获得你想要的结果。


然而,更可读的方法是使用RegEx来匹配您的搜索模式并逐字搜索您的字符串。那么代码就是:

$data = 'hey this is a beautiful day #content_start#The World is Beautiful#content_end#';
$matches = array();
preg_match('/#content_start#(.*)#content_end#/', $data, $matches);
echo $matches[1];

答案 1 :(得分:1)

试试这个......

$data = 'hey this is a beautiful day #content_start#The World is Beautiful#content_end#';
echo substr(strstr(implode(explode("end#",implode("{",explode("start#", implode(explode("#content_", $data)))))), '{'), 1);

答案 2 :(得分:0)

为什么不使用它?

$data = 'hey this is a beautiful day #content_start#The World is Beautiful#content_end#';
$parts = explode('#', $data);
echo $parts[2];

答案 3 :(得分:0)

使用explode不是最佳选择。

您最好使用strpossubstr

$start = '#content_start#';
$end   = '#content_end#';
$startPos = strpos($data, $start) + strlen($start);
$length = strpos($data, $end) - $startPos;
$result = substr($data, $startPos, $length);

答案 4 :(得分:0)

这是正则表达式的工作:

$data = 'hey this is a beautiful day #content_start#The World is Beautiful#content_end#';
preg_match( '/#content_start#(.*)#content_end#/s', $data, $matches );
print_r( $matches );

这将显示:

Array
(
    [0] => #content_start#The World is Beautiful#content_end#
    [1] => The World is Beautiful
)

因此$matches[0]包含原始匹配字符串,$matches[1]包含匹配项。