说了半天, 没有听明白你要问的问题..1 只替换一个
看手册
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit [, int &$count ]] )$limit 参数.
$count 参数.
仔细看看这两个参数是干什么的.2 为空.倒底是文章内容?还是SQL 记录???
被你迷糊打败了......为空这种过滤...你如果知道点SQL语句的知识,应该不会有这样的问题.
看你下面的代码,,如果是你写的,那你应该不会问出上面的两个问题.如果不是你写的. 还是那句话, 学习基础吧.把基础打牢了,再开始写代码...
看手册
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit [, int &$count ]] )$limit 参数.
$count 参数.
仔细看看这两个参数是干什么的.2 为空.倒底是文章内容?还是SQL 记录???
被你迷糊打败了......为空这种过滤...你如果知道点SQL语句的知识,应该不会有这样的问题.
看你下面的代码,,如果是你写的,那你应该不会问出上面的两个问题.如果不是你写的. 还是那句话, 学习基础吧.把基础打牢了,再开始写代码...
我添加一篇文章
名称"正则替换"
内容"请高手帮忙~正则替换的一个问题,谢谢了"
关键字"正则 替换 高手 帮忙"
-----------------------------
后台管理关键字
aid keyword rank sta rpurl
1 正则 10 30 http://csdn.net/------------------------------
现在就是只有后台有正则这个关键字,而且 这个关键字所对应的rpurl不等于空时
文章正文的'正则'这个字才会替换成带链接的'正则'(<a href="http://csdn.net/">正则</a>),而且文中所有的'正则'字都会被替换我想做的就是
直接把表里的 rpurl不等于空的所有记录读出来
而且只要文章中存在rpurl对应的关键字(keyword)就替换掉,但是只替换第一次出现的(而且本身带连接的不替换)
---------
这个不是我写的啊 我是修改 急用 麻烦帮忙啊!~
$keywordList = array(
array('id' => 1 , 'word' => '正则','url' =>'http://csdn.net'),
array('id' => 2 , 'word' => '示例','url' =>'http://163.com'),
array('id' => 3 , 'word' => '特殊字符示例)','url' =>'http://162.com')
);
$jsKeywords = json_encode($keywordList);
?>-->
<body>
<div id="myContent">
这是一段文字,其中包含了正则这个词,并包含一个存在于链接中的<a href="http://google.com">正则</a>,<br>
这里正则这个词将会第二次出现。<br>
这里正则这个词将会第三次出现。<br>
这是一段文字,其中包含了示例这个词,并包含一个存在于链接中的<a href="http://google.com">示例</a>,<br>
这里示例这个词将会第二次出现。<br>
特殊字符示例)
</div>
</body>
<script type="text/javascript">
var _contentEl = document.getElementById("myContent");
var _contentHTML = _contentEl.innerHTML;
var _replaceCount = 2; // 允许替换的次数
var _re;
var _word;
var _url;
var _re;
//var _keywordList = <?php echo $jsKeywords; ?>;
var _keywordList = [{"id":1,"word":"\u6b63\u5219","url":"http:\/\/csdn.net"},{"id":2,"word":"\u793a\u4f8b","url":"http:\/\/163.com"},{"id":3,"word":"\u7279\u6b8a\u5b57\u7b26\u793a\u4f8b)","url":"http:\/\/162.com"}];
var _replaced = new Array();
String.prototype.inArray = function(_array)
{
var _replaced = 0;
for(key in _array)
{
if (_array[key] == this)
{
_replaced += 1;
}
}
if (_replaced > _replaceCount)
{
return true;
}
return false;
};
var _need;
var _reM = new RegExp("(\\\$|\\\(|\\\)|\\\*|\\\+|\\\-|\\\[|\\\]|\\\\|\\\^|\\\{|\\\}|\\\|)","ig");
for(key in _keywordList)
{
word = _keywordList[key];
_word = word.word;
_url = word.url;
if (_word.length > 0 && _url.length > 0)
{
_word = _word.replace(_reM,"\\$1");
_re = new RegExp("((<a)?[^<\\/a]*)("+_word+")","ig");
_contentHTML = _contentHTML.replace(_re,function($0,$1,$2,$3) {
if (typeof($3) == "string")
{
_need = $3;
if (!_need.inArray(_replaced))
{
_replaced.push(_need);
return $1+"<a href="+_url+">"+$3+"</a>";
}
}
return $1+$3;
}
);
}
}
_contentEl.innerHTML = _contentHTML;
</script>
即时写的,乱了点。自己可以整理一下。
var mySorter = function(a,b){
if (a["word"].length == b["word"].length)
{
return 0;
}
return (a["word"].length > b["word"].length)?-1:1;
}
_keywordList = _keywordList.sort(mySorter);
var _replaced = new Array();在定义keywordList的语句后加上这条就可以了。
如:$string = preg_replace('/(^ ¦>)([^ <]+)(?= < ¦$)/sUe', "highlight('\\2',\$word, '', '\\1', 'me')", $string,1);