Найти слова в строку


Я создаю функцию в PHP, который получает string. Затем он должен искать внутри этого string, слова в квадратных скобках и сохраняет их в массив.

Есть ли функция, которая выполняет поиск только этих слов и сохранить их в массив? Или в переменной, чтобы после того, как я передал ей, чтобы массив?

, Например string:

 <font color="maroon">[como]</font>  &lt;rel&gt; &lt;ks&gt; <font color="blue"><b>ADV</b> </font> <font color="darkgreen">@ADVL&gt;</font> <font color="darkgreen"><b>@#FS-ADVL</font></b> <font color="darkgreen"><b>@#FS-N&lt;</font></b>
    <dt><b><font color="maroon">não</font></b> 

    <font color="maroon">[não]</font>  <font color="blue"><b>ADV</b> </font> <font color="darkgreen">@ADVL&gt;</font>
    <dt><b><font color="maroon">amar</font></b> 

    <font color="maroon">[amar]</font>  &lt;vt&gt; <font color="blue"><b>V</b> FUT 1/3S SUBJ VFIN </font> <font color="darkgreen">@FMV</font>
    <dt><b><font color="maroon">uma</font></b> 

    <font color="maroon">[um]</font>  &lt;arti&gt; <font color="blue"><b>DET</b> F S </font> <font color="darkgreen">@&gt;N</font>
    <dt><b><font color="maroon">pessoa</font></b> 

    <font color="maroon">[pessoa]</font>  &lt;H&gt; <font color="blue"><b>N</b> F S </font> <font color="darkgreen">@&lt;ACC</font>
    <dt><b><font color="maroon">tão</font></b> 

    <font color="maroon">[tão]</font>  &lt;dem&gt; &lt;quant&gt; <font color="blue"><b>ADV</b> </font> <font color="darkgreen">@&gt;A</font>
    <dt><b><font color="maroon">linda</font></b> 

    <font color="maroon">[lindo]</font>  <font color="blue"><b>ADJ</b> F S </font> <font color="darkgreen">@N&lt;</font>
    <dt><b><font color="maroon">.</font></b> 

Примере массива

Array
(
    [0] => como
    [1] => não
    [2] => amar
    [3] => um
    [5] => pessoa
    [6] => tão
    [7] => lindo

)
 1
Author: LINQ, 2015-09-20

1 answers

Можете использовать регулярное выражение, чтобы захватить только те символы в скобках, единственная деталь не ускользает от них, поскольку они являются метасимволы.

Выражение \[.*\]/, означает, capture открывает скобки, за которой следует любой символ наибольшее количество раз, и в обязательном порядке должны остановить найти закрывается в квадратные скобки.

<?php
$str = '
<font color="maroon">[como]</font>  &lt;rel&gt; &lt;ks&gt; <font color="blue"><b>ADV</b> </font> <font color="darkgreen">@ADVL&gt;</font> <font color="darkgreen"><b>@#FS-ADVL</font></b> <font color="darkgreen"><b>@#FS-N&lt;</font></b>
    <dt><b><font color="maroon">não</font></b> 

    <font color="maroon">[não]</font>  <font color="blue"><b>ADV</b> </font> <font color="darkgreen">@ADVL&gt;</font>
    <dt><b><font color="maroon">amar</font></b> 

    <font color="maroon">[amar]</font>  &lt;vt&gt; <font color="blue"><b>V</b> FUT 1/3S SUBJ VFIN </font> <font color="darkgreen">@FMV</font>
    <dt><b><font color="maroon">uma</font></b> 

    <font color="maroon">[um]</font>  &lt;arti&gt; <font color="blue"><b>DET</b> F S </font> <font color="darkgreen">@&gt;N</font>
    <dt><b><font color="maroon">pessoa</font></b> 

    <font color="maroon">[pessoa]</font>  &lt;H&gt; <font color="blue"><b>N</b> F S </font> <font color="darkgreen">@&lt;ACC</font>
    <dt><b><font color="maroon">tão</font></b> 

    <font color="maroon">[tão]</font>  &lt;dem&gt; &lt;quant&gt; <font color="blue"><b>ADV</b> </font> <font color="darkgreen">@&gt;A</font>
    <dt><b><font color="maroon">linda</font></b> 

    <font color="maroon">[lindo]</font>  <font color="blue"><b>ADJ</b> F S </font> <font color="darkgreen">@N&lt;</font>
    <dt><b><font color="maroon">.</font></b>';

$regex ='/\[.*\]/';
preg_match_all($regex, $str, $matches);

echo '<pre>';
print_r($matches);

Пример ideone

 3
Author: rray, 2015-09-20 15:56:54