-1

I need to create three regular expressions to extract the multiple words within square brackets , using the preg_match_all ()

example

Input string:

Lorem [ipsum] dolor sit [[amet]], nam you dolores detracto definitionem. Et admodum fabellas patrioque here, offendit an obstinate sea, vis at [[summo]] alienum cotidieque. Quo tollit dolores cu viderer [Theophrastus] to vix. Cum homes erroribus to assueverit, putant vocent democritum eum ut ipsum nec timeam and Persius. Putant suscipit abhorreant jus cu. Pri doctus feugiat facilisis not. [[[East]]] in sint malis, and Equidem harassment inciderint sea, [[[vocibus]]] id mentitum sea.

1 . desired output for single brackets

[0 ] => Array
        (
           [0 ] => ipsum
           [1 ] => Theophrastus
       )

2 . desired output for double square brackets

[0 ] => Array
       (
           [0 ] => amet
           [1 ] => summo
       )

3 . desired output for triple square brackets

[0 ] => Array
       (
           [0 ] = > East
           [1 ] => vocibus
       )

Appreciate any help !

z3ne
  • 1
  • 1

3 Answers3

1

Try following:

preg_match_all("/\[(\s*[\w]*\s*)\]/", $input, $output, PREG_PATTERN_ORDER);

Demo

Eun
  • 3,993
  • 3
  • 27
  • 47
  • 2
    This doesn't produce the output OP wants: "*I need to create three regular expressions to extract the multiple words within square brackets*" – Amal Murali Apr 09 '14 at 15:10
1

UPDATE:

for 1

preg_match_all('/[^\[]\[([^\[].*)\]/U', $text, $matches)

for 2

preg_match_all('/[^\[]\[\s?\[([^\[].*)\]/U', $text, $matches)

for 3

preg_match_all('/[^\[]\[{3}([^\[].*)\]/U', $text, $matches)

demo

zavalit
  • 222
  • 2
  • 12
0

This not-so-readable looking regex should work:

$s = 'Lorem [ ipsum ] dolor sit [[ amet ]] , nam you dolores detracto definitionem . Et admodum fabellas patrioque here , offendit an obstinate sea , vis at [[ summo ]] alienum cotidieque . Quo tollit dolores cu viderer [ Theophrastus ] to vix . Cum homes erroribus to assueverit , putant vocent democritum eum ut ipsum nec timeam and Persius . Putant suscipit abhorreant jus cu . Pri doctus feugiat facilisis not. [[[ East ]]] in sint malis , and Equidem harassment inciderint sea , [[[ vocibus ]]] id mentitum sea .';

if (preg_match_all('/(?<!\[)\[(?!\[)([^]]*)\](?!\[)/', $s, $m))  // single [...]
   print_r($m[1]);

if (preg_match_all('/(?<!\[)\[\[(?!\[)([^]]*)\]\](?!\[)/', $s, $m)) // double [[...]]  
   print_r($m[1]);

if (preg_match_all('/(?<!\[)\[\[\[(?!\[)([^]]*)\]\]\](?!\[)/', $s, $m)) // triple [[[...]]]
   print_r($m[1]);

OUTPUT:

Array
(
    [0] =>  ipsum
    [1] =>  Theophrastus
)
Array
(
    [0] =>  amet
    [1] =>  summo
)
Array
(
    [0] =>  East
    [1] =>  vocibus
)
anubhava
  • 664,788
  • 59
  • 469
  • 547