2016-10-17 63 views
0

我想用括号拆分字符串,但是我的数组有一些额外的空值。用括号将字符串拆分

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

// 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 
      ) 

    ) 
+0

看起来像你只需要''/ \ s * [] [] /''还可以匹配垂直空格(也就是说,如果您去掉了标签,然后用换行符得到输入字符串 - 请参阅https://ideone.com/l542yN)。 –

+0

@WiktorStribiżew这仍然给我空阵列值 – twan

回答

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

这给了我两个数组,我会在我的问题中添加代码的输出。 – twan

+0

只是使用第二个,即$匹配[1] – tarun14110

+0

是的工作,但为什么有2个数组? – twan

0

你得到你所期望(除所产生的额外阵列空项),结果呢?
如果你的唯一的问题是仅仅有你的阵列中的空项,可以快速修复,随着array_values()array_filter()组合通过下面的代码片段作为证明:

<?php 

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

    var_dump($arr); 

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