正则表达式多个元素一个字符串

贾斯汀·埃斯韦尔

我有以下字符串...

Out with the <_link>user://1|Team GB  for
<_link>tag://FridayBeers|#FridayBeers

而且我编写了以下正则表达式,以去除标签和字符。

~<(/){0,1}.*?( /){0,1}>|(tag://\w*\||user://[0-9]*\|)~

但是,我现在需要实现的是以下内容

<_link>user://1|Team GB被转换成<a href="user/1">Team GB</a><_link>tag://FridayBeers|#FridayBeers<a href="tags/FridayBeers">#FridayBeers</a>

有人可以发布一个答案来更改我的正则表达式以允许我使用PHP吗?

$post_text = "Out with the <_link>user://1|Team GB  for <_link>tag://FridayBeers|#FridayBeers";
$pattern = "~<(/){0,1}.*?( /){0,1}>|(tag://\w*\||user://[0-9]*\|)~"; //"~<(/){0,1}.*?( /){0,1}>|(tag://\w*\||user://[0-9]\|)~";
$replacement = " ";
$regexd = preg_replace($pattern, $replacement, $post_text);
kelunik

您可以使用preg_replace_callback实现此目的下面的代码示例只是一个最小的示例(请参见下面的通知)。

<?php

$pattern = "~\<_link\>((?<typeUser>user)\://(?<userId>\d+)\|(?<userName>[a-zA-Z]+)|(?<typeTag>tag)\://(?<tagLink>[a-zA-Z]+)\|#(?<tagTitle>[a-zA-Z]+))~";
$string = "<_link>user://1|Team GB and <_link>tag://FridayBeers|#FridayBeers";

echo preg_replace_callback($pattern, function($match) {
    if(!empty($match['typeUser'])) {
        return '<a href="user/'.$match['userId'].'">'.$match['userName'].'</a>';
    } else {
        return '<a href="tags/'.$match['tagLink'].'">'.$match['tagTitle'].'</a>';
    }
}, $string);

这段代码不关心转义HTML。另外,该模式只关心名称中没有空格。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java中使用正则表达式多次匹配一个字符串

来自分类Dev

在两个字符串(包括第一个字符串)之间匹配的正则表达式

来自分类Dev

正则表达式匹配不包括第一个字符的字符串

来自分类Dev

正则表达式-回显字符串的第一个字符

来自分类Dev

正则表达式以匹配2个字符串并包含另一个字符串

来自分类Dev

正则表达式从一个字符串到另一个字符串

来自分类Dev

如何使用正则表达式按最后一个字符拆分字符串?

来自分类Dev

如果文本仅包含一个字符串,则匹配文本的正则表达式

来自分类Dev

正则表达式删除与第一个字符串匹配的行?

来自分类Dev

正则表达式FO一个字符串替换号码

来自分类Dev

使用Ansible在正则表达式匹配行的末尾附加一个字符串

来自分类Dev

正则表达式以匹配多个字符串之一,然后是另一个字符串

来自分类Dev

得到一个字符串的PHP正则表达式匹配

来自分类Dev

C#正则表达式-一个字符串的不同条件

来自分类Dev

在正则表达式中选择子字符串的最后一个字符

来自分类Dev

正则表达式匹配多个空格,直到一个字符

来自分类Dev

Python 3-正则表达式-匹配少一个字符的字符串

来自分类Dev

正则表达式似乎将一个字符串视为多个子字符串

来自分类Dev

正则表达式删除与第一个字符串匹配的行?

来自分类Dev

正则表达式匹配一个字符串但失败相同

来自分类Dev

正则表达式查找不包含数字的最后一个字符串

来自分类Dev

使用正则表达式替换匹配字符串的最后一个字符

来自分类Dev

正则表达式:引号中的最后一个字符串

来自分类Dev

如何使用正则表达式从另一个字符串的开头删除多个字符串

来自分类Dev

R:从第一个字符到字符串末尾的正则表达式

来自分类Dev

如何从 Python 中的正则表达式中只提取一个字符串?

来自分类Dev

如何只拒绝正则表达式模式中的一个字符串

来自分类Dev

正则表达式不会分隔最后一个字符串

来自分类Dev

正则表达式匹配字符串中的最后一个字符 - C#

Related 相关文章

  1. 1

    在Java中使用正则表达式多次匹配一个字符串

  2. 2

    在两个字符串(包括第一个字符串)之间匹配的正则表达式

  3. 3

    正则表达式匹配不包括第一个字符的字符串

  4. 4

    正则表达式-回显字符串的第一个字符

  5. 5

    正则表达式以匹配2个字符串并包含另一个字符串

  6. 6

    正则表达式从一个字符串到另一个字符串

  7. 7

    如何使用正则表达式按最后一个字符拆分字符串?

  8. 8

    如果文本仅包含一个字符串,则匹配文本的正则表达式

  9. 9

    正则表达式删除与第一个字符串匹配的行?

  10. 10

    正则表达式FO一个字符串替换号码

  11. 11

    使用Ansible在正则表达式匹配行的末尾附加一个字符串

  12. 12

    正则表达式以匹配多个字符串之一,然后是另一个字符串

  13. 13

    得到一个字符串的PHP正则表达式匹配

  14. 14

    C#正则表达式-一个字符串的不同条件

  15. 15

    在正则表达式中选择子字符串的最后一个字符

  16. 16

    正则表达式匹配多个空格,直到一个字符

  17. 17

    Python 3-正则表达式-匹配少一个字符的字符串

  18. 18

    正则表达式似乎将一个字符串视为多个子字符串

  19. 19

    正则表达式删除与第一个字符串匹配的行?

  20. 20

    正则表达式匹配一个字符串但失败相同

  21. 21

    正则表达式查找不包含数字的最后一个字符串

  22. 22

    使用正则表达式替换匹配字符串的最后一个字符

  23. 23

    正则表达式:引号中的最后一个字符串

  24. 24

    如何使用正则表达式从另一个字符串的开头删除多个字符串

  25. 25

    R:从第一个字符到字符串末尾的正则表达式

  26. 26

    如何从 Python 中的正则表达式中只提取一个字符串?

  27. 27

    如何只拒绝正则表达式模式中的一个字符串

  28. 28

    正则表达式不会分隔最后一个字符串

  29. 29

    正则表达式匹配字符串中的最后一个字符 - C#

热门标签

归档