获取两个字符串php之间的子字符串

时间:2013-09-09 07:33:30

标签: php string split substring explode

假设我有一组以某种方式格式化的字符串:

$string1 = "(substring1) Hello";
$string2 = "(substring2) Hi";

如何将'()'的内部作为单个字符串。我知道这是可能的 使用:

$substring = explode( ")",$string1 );

然后我留下 $ substring [0] ,其中包含“(子串” $ substring [1] ,其中包含有没有快速的扫描来获得内部的'(')?谢谢我知道这是一个毫无疑问的问题。

3 个答案:

答案 0 :(得分:3)

explode可能需要一种解决方法,因为()不同。一个简单的正则表达式将完成工作。

$string1 = "(substring1) Hello";
preg_match('#\((.*?)\)#', $string1, $match);  // preg_match_all if there can be multiple such substrings
print $match[1];

答案 1 :(得分:1)

好吧,如果你想保持爆炸,请使用你的子串[0]:

$substring[0] = substr($substring[0],1);

这将返回“(”。

之后的部分

否则,请使用regular expression来匹配您所需的内容!

编辑:

检查上面的答案,看看正则表达式解决方案,这家伙为您提供了解决问题的好方法! :

答案 2 :(得分:0)

如果您想使用explode来完成这项工作:

<?php
$string1 = "(substring1) Hello";

function between($delimiter1, $delimiter2, $subject)
{
    $arr = explode($delimiter2, $subject);
    if (!$arr || empty($arr) || count($arr) == 1)
    {
        return '';
    }
    $oldStr = trim(array_shift($arr));
    $arr = explode($delimiter1, $oldStr);
    if (!$arr || empty($arr))
    {
        return '';
    }
    return trim(array_pop($arr));
}

$result = between('(', ')', $string1);
echo $result, "\n";

但我建议你使用preg_match函数,它使用正则表达式匹配字符串,更强大和复杂:

<?php
$string1 = "(substring1) Hello";

$pattern = '/\((.*?)\)/';
$match = array();
preg_match($pattern, $string1, $match);
echo $match[1], "\n";