假设我有一组以某种方式格式化的字符串:
$string1 = "(substring1) Hello";
$string2 = "(substring2) Hi";
如何将'()'的内部作为单个字符串。我知道这是可能的 使用:
$substring = explode( ")",$string1 );
然后我留下 $ substring [0] ,其中包含“(子串”和 $ substring [1] ,其中包含有没有快速的扫描来获得内部的'(')?谢谢我知道这是一个毫无疑问的问题。
答案 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";