我是PHP的初学者。我有字符串:
$fullstring = "this is [tag]dog[/tag], [tag]cat[/tag], [tag]lion[/tag]";
我想从"cat"
获取字符串$fullstring
。
我曾经试过这个:
Get substring between two strings PHP
但我只能得到第一个字符串(dog)
。感谢您的时间。
Thet Cartter。
答案 0 :(得分:5)
尝试使用preg_match_all
$fullstring = "this is [tag]dog[/tag], [tag]cat[/tag], [tag]lion[/tag]";
preg_match_all("'\[tag\](.*?)\[\/tag\]'si", $fullstring, $match);
foreach($match[1] as $val){
echo $val, ' ';
}
// result: dog cat lion
仅获取第二个标记的内容(现在是猫)
echo $mathc[1][1]
// result: cat
答案 1 :(得分:0)
您正在寻找preg_match()
功能。下面的示例可以帮助您。
$fullString = "this is [tag]dog[/tag], [tag]cat[/tag], [tag]lion[/tag]";
$regex = "/\[tag\]\w+\[\\tag\]/";
preg_match($regex, $fullString, $matches);
foreach($matches as $match){
echo $match;
}
// result, dog, cat, lion
答案 2 :(得分:0)
这是this answer的修改版本。此函数将根据您要搜索的内容返回它可以找到的所有实例。
function getContents($str, $startDelimiter, $endDelimiter, $needle) {
$contents = array();
$startDelimiterLength = strlen($startDelimiter);
$endDelimiterLength = strlen($endDelimiter);
$startFrom = $contentStart = $contentEnd = 0;
while (false !== ($contentStart = strpos($str, $startDelimiter, $startFrom))) {
$contentStart += $startDelimiterLength;
$contentEnd = strpos($str, $endDelimiter, $contentStart);
if (false === $contentEnd) {
break;
}
$tempString = substr($str, $contentStart, $contentEnd - $contentStart);
if ($tempString == $needle) {
$contents[] = $tempString;
}
$startFrom = $contentEnd + $endDelimiterLength;
}
return $contents;
}
答案 3 :(得分:0)
我尝试修改旧函数[http://www.justin-cook.com/wp/2006/03/31/php-parse-a-string-between-two-strings/]。我明白了:
function get_string_between($string, $start, $end, $index){
if ($index <= 0) return '';
$string = ' ' . $string;
$ini = 0;
$x = 1;
while ($x <= $index) {
$ini = strpos($string, $start, $ini + 1);
if ($ini == 0) return '';
$x++;
}
$ini += strlen($start);
$len = strpos($string, $end, $ini) - $ini;
return substr($string, $ini, $len);
}
$ fullstring =&#34;这是[tag] dog [/ tag],[tag] cat [/ tag],[tag] lion [/ tag]; echo get_string_between($ fullstring,&#34; [tag]&#34;,&#34; [/ tag]&#34;,2); // Result = cat