通常:
$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);
?或者是否有更简单,更合适的方式。
答案 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
不是最佳选择。
您最好使用strpos
和substr
:
$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]
包含匹配项。