问个正则规则的写法

2017-10-17 11:24:28 +08:00
 cnqncom
$str = "<div class='brush:php;'>";
$key = "brush:(a-z,A-Z);";
$val = "brush:$1;toolbar:false;";
echo preg_replace('/'.$key.'/i',$val,$str);



brush:php;这里可能是 PHP 也可能是 JAVA 等
需要将 brush:php;这个内容保留,在后面加上 toolbar:false;字符串
3099 次点击
所在节点    PHP
15 条回复
lrvy
2017-10-17 11:38:22 +08:00
\bbrush\b:[php|java]; 这样吗?
cnqncom
2017-10-17 11:41:17 +08:00
@lrvy 可能不止这些,我希望里面是任意字符串
2ME
2017-10-17 11:44:17 +08:00
用 phpQuery 提取出来 CLASS 简单一点
askfilm
2017-10-17 11:53:14 +08:00
@cnqncom 把 “;” 换成 “;toolbar:false;” 不就行了,
或者你不放心的话 把 “ ;' ” 换成 “ ;toolbar:false;' ” 也行啊
要啥正则
whahuzhihao
2017-10-17 11:54:21 +08:00
echo preg_replace('/brush:([^\s\']+)/i', "brush:$1toolbar:false;","<div class='brush:php;'>");
cnqncom
2017-10-17 12:17:31 +08:00
@askfilm 这样不行哦,其他 CLASS 全部被替换了
askfilm
2017-10-17 12:51:46 +08:00
@cnqncom 什么 class 里会分号?
hadixlin
2017-10-17 13:05:13 +08:00
brush:(.*)?; brush:$1;toolbar:false
@whahuzhihao 的答案应该就是正解了.

另外楼主你的需求描述不够清楚,请注意.
vincenth520
2017-10-17 13:08:42 +08:00
```php
<?php

$str = "<div class='brush:php;'>";
$key = "brush:(.+);";
$val = "brush:$1;toolbar:false;";
echo preg_replace('/'.$key.'/i',$val,$str);
```
vincenth520
2017-10-17 13:09:44 +08:00
不支持 markdown,尴尬了
hibobby
2017-10-17 13:11:33 +08:00
为啥不把"<div class='brush:php;'>";中的 class='brush:php;'提取出来然后分组操作?
qq641016547
2017-10-17 13:18:47 +08:00
cnqncom
2017-10-17 15:06:21 +08:00
@hadixlin 感谢
sucaihuo
2017-10-17 15:56:19 +08:00
进来学习一下
renminghao
2017-10-17 18:01:27 +08:00
/brush:(\w+?)/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/398267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX