php的preg_replace正则表达式

liaoyan123 2012-06-29 03:30:50
比如<任意个字符XXXX任意个字符>,判断是否存在XXXX字符串,如果是,则替换前后的尖括号,最后变成[任意个字符XXXX任意个字符]输出。
...全文
157 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liaoyan123 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

PHP code
$str = "<任意个字符XXXX任意个字符><任意个字符ZZZZ任意个字符>";
$k = 'XXXX';
echo preg_replace("/<([^>]*?{$k}[^>]*)>/", '[$1]', $str);

[任意个字符XXXX任意个字符]<任意个字符ZZZZ任意个字符>
PHP code
$k = 'ZZZZ';
echo preg_replace……
[/Quote]
非常感谢。
xuzuning 2012-06-29
  • 打赏
  • 举报
回复
$str = "<任意个字符XXXX任意个字符><任意个字符ZZZZ任意个字符>";
$k = 'XXXX';
echo preg_replace("/<([^>]*?{$k}[^>]*)>/", '[$1]', $str);
[任意个字符XXXX任意个字符]<任意个字符ZZZZ任意个字符>
$k = 'ZZZZ';
echo preg_replace("/<([^>]*?{$k}[^>]*)>/", '[$1]', $str);
<任意个字符XXXX任意个字符>[任意个字符ZZZZ任意个字符]
liaoyan123 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
preg_replace('/<(.*XXXX.*?)>/s','[$1]',$str); //少了防止贪婪匹配
[/Quote]

联系出现的时候,仅替换第一个和最后一个。。。比如
<任意个字符XXXX任意个字符><任意个字符XXXX任意个字符>,结果是
[任意个字符XXXX任意个字符><任意个字符XXXX任意个字符]
一起混吧 2012-06-29
  • 打赏
  • 举报
回复
preg_replace('/<(.*XXXX.*?)>/s','[$1]',$str); //少了防止贪婪匹配
liaoyan123 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

PHP code
echo preg_replace('/<(.+(?:XXXX).+?)>/s','[$1]',$str);
[/Quote]
似乎这样也可以,对么?
preg_replace('/<(.*XXXX.*)>/s','[$1]',$str);
一起混吧 2012-06-29
  • 打赏
  • 举报
回复
echo preg_replace('/<(.+(?:XXXX).+?)>/s','[$1]',$str);
liaoyan123 2012-06-29
  • 打赏
  • 举报
回复
修正一下问题。如果有一个字符串
$str="<任意个字符XXXX任意个字符><任意个字符ZZZZ任意个字符>"

有什么办法可以修改成
$str="[任意个字符XXXX任意个字符]<任意个字符ZZZZ任意个字符>"

只修改符合XXXX条件的尖括号,不修改其他的。
liaoyan123 2012-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

最简单的
if(strstr()) {
str_replace
}
[/Quote]
问题是,如果还有<任意个字符ZZZZ任意个字符>,那不是也变成了[任意个字符ZZZZ任意个字符]
床上等您 2012-06-29
  • 打赏
  • 举报
回复
最简单的
if(strstr()) {
str_replace
}

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧