使用正则表达式和php preg_match_all获取括号之间的字符串

亚历山大·纳普

我有几个带有自定义宏标记的文本。我想解析这些标签的内容,但我想以不同的方式对待那些带有参数的标签。

我需要从这些括号内容中构建有效的 URL。

例子:

这是我的文字:

{gallery}events/2016-02-18-Sunny-Sport-Day,single=IMG_0336.jpg,salign=left{/gallery}

嘿!我们度过了美好的一天,进行了一场艰难但有趣的比赛。我们的团队进行了一场精彩的比赛,并且能够获得第二名。

{gallery}events/2016-02-18-Sunny-Sport-Day{/gallery}

{gallery}团队/成员{/gallery}

所以我需要在 {gallery} 标签之间提取字符串的路径部分,但我不想将那些与参数匹配,例如“single=IMG_0336.jpg,salign=left”,因为这些是分开处理的。

我需要做以下事情的东西:

{gallery}events/2016-02-18-Sunny-Sport-Day,single=IMG_0336.jpg,salign=left{/gallery}

变成

第一个输出:events/2016-02-18-Sunny-Sport-Day

第二个输出:IMG_0336.jpg

{gallery}events/2016-02-18-Sunny-Sport-Day{/gallery}

变成

事件/2016-02-18-Sunny-Sport-Day

尝试了以下正则表达式:

/\{gallery\}(.*?)(?!single=)\{\/gallery\}/

但它始终匹配包括单个参数在内的整个字符串。

为了获取单个参数的内容,我尝试了以下操作:

/,single=(.*?),/

这仅适用于单个参数,但我不知道如何将所有内容组合在一起。

结论:

在 PHP 环境中,我希望输出两个数组。第一个仅包含文件夹:

  • 事件/2016-02-18-Sunny-Sport-Day
  • 团队成员

以及由单个文件路径组成的第二个数组:

  • 事件/2016-02-18-Sunny-Sport-Dayist/IMG_0336.jpg
米克马克库萨

此方法将提取您想要的子字符串并根据您的要求准备输出数据:Pattern Demo

PHP 代码:(演示

$str="{gallery}events/2016-02-18-Sunny-Sport-Day,single=IMG_0336.jpg,salign=left{/gallery}

Hey there! We had a great day with a tough but funny competition. Our team had a great race and was able to finish in second place.

{gallery}events/2016-02-18-Sunny-Sport-Day{/gallery}

{gallery}team/members{/gallery}";
preg_match_all('@\{gallery\}([^,]*?)(?:,single=([^,{]+).*?)?\{/gallery\}@',$str,$out);

// Matches array:
var_export($out);

echo "\n\n---\n\n";

// Folders only array:
var_export(array_filter(array_slice($out,1)[0],'strlen'));

echo "\n\n---\n\n";

// Path + Image files array:
foreach($out[2] as $i=>$v){
    if($v){
        $result[]="{$out[1][$i]}/$v";
    }
}
var_export($result);\

输出:

array (
  0 => 
  array (
    0 => '{gallery}events/2016-02-18-Sunny-Sport-Day,single=IMG_0336.jpg,salign=left{/gallery}',
    1 => '{gallery}events/2016-02-18-Sunny-Sport-Day{/gallery}',
    2 => '{gallery}team/members{/gallery}',
  ),
  1 => 
  array (
    0 => 'events/2016-02-18-Sunny-Sport-Day',
    1 => 'events/2016-02-18-Sunny-Sport-Day',
    2 => 'team/members',
  ),
  2 => 
  array (
    0 => 'IMG_0336.jpg',
    1 => '',
    2 => '',
  ),
)

---
// Folders only array:
array (
  0 => 'events/2016-02-18-Sunny-Sport-Day',
  1 => 'events/2016-02-18-Sunny-Sport-Day',
  2 => 'team/members',
)

---
// Path + Image files array:
array (
  0 => 'events/2016-02-18-Sunny-Sport-Day/IMG_0336.jpg',
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

php preg_match_all与正则表达式,字符串解析。多行

来自分类Dev

正则表达式PHP preg_match_all

来自分类Dev

PHP preg_match_all正则表达式

来自分类Dev

PHP:preg_match_all() - 如何使用正则表达式正确查找所有出现的或分隔的子字符串?

来自分类Dev

使用正则表达式(preg_match_all)从括号中排除数据

来自分类Dev

PHP preg_match和正则表达式

来自分类Dev

PHP的preg_match_all:正则表达式使用转义符获取以管道分隔的字段

来自分类Dev

使用PHP进行正则表达式字符串替换和拆分

来自分类Dev

使用正则表达式(preg_replace:php)和受限词向字符串添加文本

来自分类Dev

如何正则表达式匹配和正则表达式替换php中的字符串

来自分类Dev

正则表达式匹配括号和逗号之间的字符串,但存在多个括号

来自分类Dev

PHP 正则表达式提取带引号和括号的子字符串

来自分类Dev

php之间的正则表达式字符串

来自分类Dev

使用正则表达式查找括号(包括括号)之间的特定字符串

来自分类Dev

使用正则表达式和javascript并获取变量

来自分类Dev

使用正则表达式获取括号内的字符串,删除括号

来自分类Dev

使用正则表达式3个表达式后获取数字和字符

来自分类Dev

使用preg_match_all()努力匹配字符串

来自分类Dev

如何在PHP中使用正则表达式删除前导字符和查询字符?

来自分类Dev

如何使用php正则表达式获取描述?

来自分类Dev

使用PHP和XPath获取与正则表达式匹配的href

来自分类Dev

使用 PHP(正则表达式?)从预定义的句子中识别和获取值

来自分类Dev

如何使用正则表达式拆分字符串以在+,-,*和符号之间进行拆分?

来自分类Dev

如何使用正则表达式和PHP选择和替换字符串中的HTML属性?

来自分类Dev

正则表达式模式在花括号之间获取字符串

来自分类Dev

正则表达式:python 在括号之间获取字符串

来自分类Dev

使用正则表达式的SQL表达式MSSQL和MySQL之间的区别

来自分类Dev

使用bash和正则表达式获取字符串中的数字

来自分类Dev

使用正则表达式和JavaScript获取字符串中的完全匹配

Related 相关文章

  1. 1

    php preg_match_all与正则表达式,字符串解析。多行

  2. 2

    正则表达式PHP preg_match_all

  3. 3

    PHP preg_match_all正则表达式

  4. 4

    PHP:preg_match_all() - 如何使用正则表达式正确查找所有出现的或分隔的子字符串?

  5. 5

    使用正则表达式(preg_match_all)从括号中排除数据

  6. 6

    PHP preg_match和正则表达式

  7. 7

    PHP的preg_match_all:正则表达式使用转义符获取以管道分隔的字段

  8. 8

    使用PHP进行正则表达式字符串替换和拆分

  9. 9

    使用正则表达式(preg_replace:php)和受限词向字符串添加文本

  10. 10

    如何正则表达式匹配和正则表达式替换php中的字符串

  11. 11

    正则表达式匹配括号和逗号之间的字符串,但存在多个括号

  12. 12

    PHP 正则表达式提取带引号和括号的子字符串

  13. 13

    php之间的正则表达式字符串

  14. 14

    使用正则表达式查找括号(包括括号)之间的特定字符串

  15. 15

    使用正则表达式和javascript并获取变量

  16. 16

    使用正则表达式获取括号内的字符串,删除括号

  17. 17

    使用正则表达式3个表达式后获取数字和字符

  18. 18

    使用preg_match_all()努力匹配字符串

  19. 19

    如何在PHP中使用正则表达式删除前导字符和查询字符?

  20. 20

    如何使用php正则表达式获取描述?

  21. 21

    使用PHP和XPath获取与正则表达式匹配的href

  22. 22

    使用 PHP(正则表达式?)从预定义的句子中识别和获取值

  23. 23

    如何使用正则表达式拆分字符串以在+,-,*和符号之间进行拆分?

  24. 24

    如何使用正则表达式和PHP选择和替换字符串中的HTML属性?

  25. 25

    正则表达式模式在花括号之间获取字符串

  26. 26

    正则表达式:python 在括号之间获取字符串

  27. 27

    使用正则表达式的SQL表达式MSSQL和MySQL之间的区别

  28. 28

    使用bash和正则表达式获取字符串中的数字

  29. 29

    使用正则表达式和JavaScript获取字符串中的完全匹配

热门标签

归档