PHP将字符串拆分为包含括号的2个变量

时间:2013-03-12 10:55:40

标签: php

我正在使用正则表达式from,虽然这只提取括号内的文本,我想完全删除它:

if( preg_match( '!\(([^\)]+)\)!', $text, $match ) )
    $text = $match[1];

E.g我有:my long text string (with another string)

我怎样才能得到:

$var1 = "my long text string";
$var2 = "with another string";

7 个答案:

答案 0 :(得分:10)

// This is all you need
<?php $data = explode('(' , rtrim($str, ')')); ?>

示例:

<?php
$str = 'your long text string (with another string)';
$data = explode('(' , rtrim($str, ')'));    

print_r($data);


// output 

// Array
// (
//     [0] => my long text string 
//     [1] => with another string
// )
// profit $$$$

?>

答案 1 :(得分:4)

$data = preg_split("/[()]+/", $text, -1, PREG_SPLIT_NO_EMPTY);

答案 2 :(得分:1)

您可以使用以下代码。但请记住,您确实需要进行额外检查以确定是否确实存在$out[0][0]$out[0][1]

    <?php
    $string = "my long text string (with another string)";
    preg_match_all("/(.*)\((.*)\)/", $string, $out, PREG_SET_ORDER);
    print_r($out);
    /*
    Array
    (
            [0] => Array
                    (
                            [0] => my long text string (with another string)
                            [1] => my long text string 
                            [2] => with another string
                    )

    )
    */

    $var1 = $out[0][1];
    $var2 = $out[0][2];
    //$var1 = "my long text string";
    //$var2 = "with another string";
    ?>

答案 3 :(得分:1)

我在正则表达方面不太好,但你可以尝试这个......

$exp=explode("(", $text);
$text1=$exp[0];
$text2=str_replace(array("(",")"), array('',''), $exp[1]);

答案 4 :(得分:1)

'([^\)]+)\(([^\)]+)\)'

只需删除!-chars并添加另一个变量字段(括号区域的名称?)及其准备就绪:)

http://www.solmetra.com/scripts/regex/index.php值得知道快速完成一些测试!

答案 5 :(得分:1)

这是一个非常详细的代码......你可以做得更短......

<?php
$longtext = "my long text string (with another string)";
$firstParantheses = strpos($longtext,"(");

$firstText = substr($longtext,0,$firstParantheses);

$secondText = substr($longtext,$firstParantheses);

$secondTextWithoutParantheses = str_replace("(","",$secondText);
$secondTextWithoutParantheses = str_replace(")","",$secondTextWithoutParantheses);

$finalFirstPart = $firstText;
$finalSecondPart = $secondTextWithoutParantheses;

echo $finalFirstPart." ------- ".$finalSecondPart;
?>

答案 6 :(得分:0)

为什么不使用此解决方法:

$vars = explode('@@', str_replace(array('(', ')'), '@@', $text));

它将用@@替换括号,然后将文本分解为数组。此外,您可以使用array_filter删除可能的空位置。