问个简单的问题吧 $t = 'C,D,E,F,G,A,B,O,X,Y,Z';$r = ' BOLD ';// 怎么把 $t 中的B与D与O换成 $r ?// 即是: C, BOLD ,E,F,G,A, BOLD , BOLD ,X,Y,Z// 有啥好方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 echo preg_replace('/[B|D|O]/',$r,$t); echo str_replace(array('B','D','O'), $r, $t); $t = 'C,D,E,F,G,A,B,O,X,Y,Z';// 怎么把 $t 中的B与D与O换成 <b ="BOLD">?</b> // 即是: C, <b ="BOLD">D</b> ,E,F,G,A, <b ="BOLD">B</b> , <b ="BOLD">O</b> ,X,Y,Z像这样的吧。 $t = 'C,D,E,F,G,A,B,O,X,Y,Z';$r = ' BOLD';$temp=explode(",",$t);foreach ($temp as $k=>$v){ if(in_array($v,array("B","D","O"))) { $temp[$k]=$r; }}print_r(join(",",$temp)); 这位这方法有点版啊。这C,D,E,F,G,A,B,O,X,Y,Z不一定是,号分隔着的。可能一大串没规律的字符。 用一楼的方法就可以了。echo preg_replace('/[B|D|O]/','<b ="BOLD">$0</b>',$t); 楼上各位。B|D|O 有中文或是其它字符会不行了。怎么写正则不太会了。 你可以用正则替换<b>标签中的内容...$str = <<<HTMLC, <b ="BOLD">D</b> ,E,F,G,A, <b ="BOLD">B</b> , <b ="BOLD">O</b> ,X,Y,ZHTML;$r = 'BOLD';echo preg_replace('/(<b *= *"BOLD">)\w+(<\/b>)/isU', "$1$r$2", $str); $html = <<<HTMLC,D,E,F,G,A,B,O,X,Y,Z,d,ssdd,b,sdsss,o,sdfs,oHTML;$keyword = '[B|D|O]';$pat = sprintf('/(.*?%s.*?)/is',$keyword);$t = preg_replace_callback($pat, 'foo', $html);function foo($matches){ global $keyword; array_shift($matches); $t = array_splice($matches, 1,1); $ret = preg_replace("/($keyword)/i", "<a href='#'>$1</a>", $matches); array_splice($ret, 1,0,$t); return implode('', $ret);}echo $t; 谢谢楼上各位写的各种马。问题是这样的。就像百度搜索的结果一样。会把你搜索关键了加红显示。所以没有什么要固定的替换字符答啊。可能是中文英文符号等.........我现在替换就有点点问题。就是替换后的字符又有查找的字符的话就有问题了。比如查找: 中国emBBBb中国美国em英国得替换成:BBBb<em>中国</em>美国<em>em</em>英国弄不了的话。我结贴算了。做个判断em就不加红了。 $html = <<<HTMLBBBb中国美国em英国HTML;$keyword = '中国|em';$pat = sprintf('/(.*?%s.*?)/uis',$keyword);$t = preg_replace_callback($pat, 'foo', $html);function foo($matches){ global $keyword; array_shift($matches); $t = array_splice($matches, 1,1); $ret = preg_replace("/($keyword)/ui", "<em>$1</em>", $matches); array_splice($ret, 1,0,$t); return implode('', $ret);}echo $t;/**BBBb<em>中国</em>美国<em>em</em>英国*/满足不了你? $html = <<<HTMLBBeBb中国美国em英国HTML;$ret = preg_replace("/(中国|em)/ui", "<em>$1</em>", $html);echo $ret;怎么不直接这样...我不知道你foo里面有啥用意啊。看来得补补了。正则学了忘学了又忘........ 把串改成$html = <<<HTMLBBBbem<a href="http://www.lem.com/a/em/">em</a><div class='em'><a href='特价信息.中国'>中国特价信息</a></div>HTML;看清楚里面那几个em,还有'中国'。然后再来思考是不是需要正则的问题。 UTF-8编码如何转变为GBK 问一个很神奇的问题,php文件和模板的关系?(ecshop) 查询语句中为何不能使用strtotime()函数? 高分求解PHP下拉菜单问题 FTP函数上传根目录的问题. 【急!!!】如何查看网站是否有外网站的盗链? php联接access数据库(不用ado)怎么连,有函数嘛? 大家作php+数据库时,用不用phplib 中的类库,用他很方便,但php的类太让人难受了 smtp 550 错误问题怎么解决? 优先的问题怎么解决? 长篇文章分页显示的代码要怎么写???我写的如下,但是会出现乱码,点击下一页就没有内容显示,要怎么修改? 关于表单提交后清空文本框的问题
// 即是: C, <b ="BOLD">D</b> ,E,F,G,A, <b ="BOLD">B</b> , <b ="BOLD">O</b> ,X,Y,Z像这样的吧。
$t = 'C,D,E,F,G,A,B,O,X,Y,Z';
$r = ' BOLD';$temp=explode(",",$t);
foreach ($temp as $k=>$v)
{
if(in_array($v,array("B","D","O")))
{
$temp[$k]=$r;
}
}
print_r(join(",",$temp));
这C,D,E,F,G,A,B,O,X,Y,Z不一定是,号分隔着的。
可能一大串没规律的字符。
echo preg_replace('/[B|D|O]/','<b ="BOLD">$0</b>',$t);
怎么写正则不太会了。
C, <b ="BOLD">D</b> ,E,F,G,A, <b ="BOLD">B</b> , <b ="BOLD">O</b> ,X,Y,Z
HTML;
$r = 'BOLD';
echo preg_replace('/(<b *= *"BOLD">)\w+(<\/b>)/isU', "$1$r$2", $str);
$html = <<<HTML
C,D,E,F,G,A,B,O,X,Y,Z,d,ssdd,b,sdsss,o,sdfs,o
HTML;$keyword = '[B|D|O]';
$pat = sprintf('/(.*?%s.*?)/is',$keyword);$t = preg_replace_callback($pat, 'foo', $html);
function foo($matches){
global $keyword;
array_shift($matches);
$t = array_splice($matches, 1,1);
$ret = preg_replace("/($keyword)/i", "<a href='#'>$1</a>", $matches);
array_splice($ret, 1,0,$t);
return implode('', $ret);
}
echo $t;
所以没有什么要固定的替换字符答啊。可能是中文英文符号等.........我现在替换就有点点问题。
就是替换后的字符又有查找的字符的话就有问题了。
比如
查找: 中国emBBBb中国美国em英国得替换成:
BBBb<em>中国</em>美国<em>em</em>英国弄不了的话。我结贴算了。做个判断em就不加红了。
$html = <<<HTML
BBBb中国美国em英国
HTML;$keyword = '中国|em';
$pat = sprintf('/(.*?%s.*?)/uis',$keyword);$t = preg_replace_callback($pat, 'foo', $html);
function foo($matches){
global $keyword;
array_shift($matches);
$t = array_splice($matches, 1,1);
$ret = preg_replace("/($keyword)/ui", "<em>$1</em>", $matches);
array_splice($ret, 1,0,$t);
return implode('', $ret);
}
echo $t;
/**
BBBb<em>中国</em>美国<em>em</em>英国
*/满足不了你?
BBeBb中国美国em英国
HTML;$ret = preg_replace("/(中国|em)/ui", "<em>$1</em>", $html);
echo $ret;怎么不直接这样...我不知道你foo里面有啥用意啊。
看来得补补了。正则学了忘学了又忘........
$html = <<<HTML
BBBbem<a href="http://www.lem.com/a/em/">em</a><div class='em'><a href='特价信息.中国'>中国特价信息</a></div>
HTML;
看清楚里面那几个em,还有'中国'。然后再来思考是不是需要正则的问题。