获取“bread”字符串之间的子字符串

时间:2014-09-08 10:00:14

标签: php

我有一个数组:

    $testcase = array(
    array('breadjambread', "jam"),
    array('breadjammbread', "jam"),
    array('xxbreadjambreadyy', "jam"),
    array('xxbreadyy', ""),
    array('xxbreadbreadjambreadyy', "breadjamm"),
    array('breadAbread', "A"),
    array('breadbread', ""),
    array('abcbreaz', ""),
    array('xyz', ""),
    array('', ""),
    array('breadbreaxbread', "breax"),
    array('breaxbreadybread', "y"),
    array('breadbreadbreadbread', "breadbread"),
    array('breadbread5breadbread', "breadbread"),
    array('breadbreadbreadbread', "bread5bread"),
);

我想获得"面包"。

之间的子串
Ex: array[0][0]="breadjambread and I will get the "jam"

    array[1][0]="breadjammbread", I will get the "jamm"

    array[2][0]="xxbreadjambreadyy", the result will be "jam"

有什么想法可以解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用正则表达式:

if (preg_match('/bread(.*?)bread/', $string, $match)) {
    $word_between_bread = $match[1];
}

答案 1 :(得分:0)

使用正则表达式,您可以匹配由其他字符串包围的字符串:

preg_match('/(?<=bread).+?(?=bread)/', $string, $matches);
var_dump($matches);

.+?是您要匹配的内容,(?<=bread)表示它应该有&#34;面包&#34;在它的前面(?=bread)意味着它应该有&#34;面包&#34;背后。

您还可以使用strpos()substr()函数在两个其他字符串之间查找字符串,但这需要您进行一些反复试验。