Search code examples
phpregexpreg-replacepreg-matchpreg-match-all

regex in php only match url and content inside brackets and quotes marks


I have the following text entered on a textarea and I want to parse from this text the 3 urls and if it has [ ] get the content in a format like: url["key","value"] I've been trying to solve it through regex, but am failing using this: /(\w.+?)[(( ?)"(.?)"),("(.?)")]/

uploads/documents/home4.jpg[ " nosotros "," Somos una asociación civil sin fines de lucro, formada por padres y madres con hijos con problemas de audición, que nos hemos organizado a raíz de los problemas que enfrentamos día a día, por la falta de apoyo para la inclusión de nuestros hijos."] , uploads/documents/home4.jpg [" servicios ","Somos una asociación civil sin fines de lucro, formada por padres y madres con hijos con problemas de audición, que nos hemos organizado a raíz de los problemas que enfrentamos día a día, por la falta de apoyo para la inclusión de nuestros hijos."] ,

http://lorempixel.com/300/300 [" tecnologias ","Somos una asociación civil sin fines de lucro, formada por padres y madres con hijos con problemas de audición, que nos hemos organizado a raíz de los problemas que enfrentamos día a día, por la falta de apoyo para la inclusión de nuestros hijos."]

I do not use regular expressions much and am kinda of stuck any help if very appreciated :)


Solution

  • You can try this:

    (\w.*?)\[([^\]]*)\]
    

    Demo

    Sample Code:

    <?php
    
    $re = '/(\w.*?)\[([^\]]*)\]/';
    $str = 'uploads/documents/home4.jpg[ " nosotros "," Somos una asociación civil sin fines de lucro, formada por padres y madres con hijos con problemas de audición, que nos hemos organizado a raíz de los problemas que enfrentamos día a día, por la falta de apoyo para la inclusión de nuestros hijos."] , uploads/documents/home4.jpg [" servicios ","Somos una asociación civil sin fines de lucro, formada por padres y madres con hijos con problemas de audición, que nos hemos organizado a raíz de los problemas que enfrentamos día a día, por la falta de apoyo para la inclusión de nuestros hijos."] ,
    
    http://lorempixel.com/300/300 [" tecnologias ","Somos una asociación civil sin fines de lucro, formada por padres y madres con hijos con problemas de audición, que nos hemos organizado a raíz de los problemas que enfrentamos día a día, por la falta de apoyo para la inclusión de nuestros hijos."]
    ';
    
    $list=[[]];
    preg_match_all($re, $str, $matches);
    $cnt=0;
    $index=0;
    for($i=1;$i<count($matches);$i++)
    {
        for($j=0;$j<3;$j++) 
            $list[$cnt++][$index]=$matches[$i][$j];
        $cnt=0;
        $index=1;
    }
    print_r($list);
    ?>
    

    Run it here