按括号拆分字符串

时间:2016-10-17 11:28:14

标签: php regex string

我试图用括号分割字符串但我的数组有一些额外的空值。

我尝试使用已回答的类似问题的代码,它会拆分字符串,但也会添加空值。

//  faq data
$faq                = "SELECT * FROM `web_content` WHERE catid = 13 AND `alias` = '".$conn->real_escape_string($_GET['alias'])."' AND state = 1 ORDER BY ordering";
$faqcon             = $conn->query($faq);
$faqcr              = array();
while ($faqcr[] = $faqcon->fetch_array());

$faqtext = $faqcr[0]['introtext'];
$arr = preg_split('/\h*[][]/', $faqtext, -1, PREG_SPLIT_NO_EMPTY);

echo '<pre>';
print_r($arr);
echo '</pre>';

数组的输出是:

Array
(
    [0] => 

    [1] => Vraag1? || Antwoord1
    [2] => 

    [3] => Vraag2? || Antwoord2
    [4] => 

    [5] => Vraag3? || Antwoord3
    [6] => 
)

我的字符串如下所示:

<p>[Vraag1? || Antwoord1]</p>
<p>[Vraag2? || Antwoord2]</p>
<p>[Vraag3? || Antwoord3]</p>

<p>标签无关紧要,我不会拆分它们,之后我就可以使用条带标签了。

答案输出:

 Array
    (
        [0] => Array
            (
                [0] => [Vraag1? || Antwoord1]
                [1] => [Vraag2? || Antwoord2]
                [2] => [Vraag3? || Antwoord3]
            )

        [1] => Array
            (
                [0] => Vraag1? || Antwoord1
                [1] => Vraag2? || Antwoord2
                [2] => Vraag3? || Antwoord3
            )

    )

2 个答案:

答案 0 :(得分:1)

$line = '[This] is a [test] string, I think [this] answers [your] question.';
preg_match_all("/\[([^\]]*)\]/", $line, $matches);
var_dump($matches[1]);

答案 1 :(得分:1)

  

您是否获得了预期的结果(结果数组中的额外空条目除外)?
如果您的唯一问题是您的数组中只有空条目,则可以快速修复通过下面的代码段演示了array_values()array_filter()的组合:

<?php

    $arr    = [
        '',
        'Vraag1? || Antwoord1',
        '',
        'Vraag2? || Antwoord2',
        '',
        'Vraag3? || Antwoord3',
        '',
    ];

    var_dump($arr);

    var_dump( array_values( array_filter($arr) ) );