首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP正则表达式在tẽt中查找特殊字符串组

PHP正则表达式在tẽt中查找特殊字符串组
EN

Stack Overflow用户
提问于 2012-11-20 03:37:21
回答 2查看 149关注 0票数 1

我有一个类似如下的字符串:

代码语言:javascript
复制
$string = 'hay qua nhi @[3818||Vinh HandSome] và @[101623||Vũ Hoài Anh] ';

我想把它转换成一个数组:

代码语言:javascript
复制
$array  = array([0]=>'@[3818||Vinh HandSome]',[1]=>'@[101623||Vũ Hoài Anh]');

并且还希望将原始字符串替换为:

代码语言:javascript
复制
$string  = 'hay qua nhi <a href='users/3818'>Vinh HandSome</a> và <a href='users/101623'>Vũ Hoài Anh</a>';

所以我尝试使用正则表达式:

代码语言:javascript
复制
echo preg_replace("/@\[([0-9]+)\|\|(.*)\]/","<a href='/users/$1'>$2</a>",$string);
preg_match_all("/@\[([0-9]+)\|\|(.*)\]/", $string, $result, PREG_PATTERN_ORDER);
print_r($result[0]); 

但它似乎不起作用。有没有人知道这种情况下正确的正则表达式?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-20 03:51:42

为两个正则表达式尝试一个惰性运算符:/@\[([0-9].+?)\|\|(.+?)\]/

票数 0
EN

Stack Overflow用户

发布于 2012-11-20 03:53:50

代码语言:javascript
复制
$subject = 'hay qua nhi @[3818||Vinh HandSome] và @[101623||Vũ Hoài Anh] ';
$pattern = '/@\[([\d]+)\|\|([^\]]+)\]/';
$replacement = "<a href='users/$1'>$2</a>";
$result = preg_replace($pattern, $replacement, $subject);

现在,$result将包含

代码语言:javascript
复制
hay qua nhi <a href='users/3818'>Vinh HandSome</a> và <a href='users/101623'>Vũ Hoài Anh</a> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13460863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档