获取字符串中的总子字符串

时间:2011-06-27 11:06:08

标签: php

我试图在字符串中的两个子字符串之间获取子字符串。使用此代码

我只获得第一个子字符串。你能说我怎样才能获得所有子字符串?

由于 Sateesh 使用代码:

<?php 
 function get_string_between($string, $start, $end){
    $string = " ".$string;
    $ini = strpos($string,$start);
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;

    return substr($string,$ini,$len);

}
$fullstring = "[tag]php[/tag] [tag]java[/tag] "; 
$count = substr_count($fullstring, '[tag]');
for($i=0; $i<$count;$i++){
$parsed = get_string_between($fullstring, "[tag]", "[/tag]");
echo "LineItems[$i]:".$parsed."<br>"; 
}
?>

2 个答案:

答案 0 :(得分:0)

$matches = array();
preg_match('#\[tag\]([^\[]+)\[/tag\]#', "[tag]php[/tag] [tag]java[/tag] ", $matches)
$matches == array("[tag]php[/tag] [tag]java[/tag] ", 'php','java');
array_shift($matches);
$matches == array('php','java');

沿着这些方向做点什么,尝试将其纳入你的功能

答案 1 :(得分:0)

这应该使用正则表达式来执行您正在寻找的内容。请注意,如果您有多个[tag]嵌套在彼此之内,它将无效。

<?
$fullstring = "[tag]php[/tag] [tag]java[/tag]";
$matches = array();
preg_match_all('@\[tag\](.*?)\[/tag\]@', $fullstring, $matches);
foreach ($matches[1] as $match) {
    // Do whatever you need to do with the matches here.
    echo "$match<br/>";
}