我试图用括号分割字符串但我的数组有一些额外的空值。
我尝试使用已回答的类似问题的代码,它会拆分字符串,但也会添加空值。
// 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 :(得分: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) ) );