近期做一个有表情的评论,在form中选择了表情以后相应的符号会输入到表单中
格式是这样的[@F_1@]代表F_1.gif,[@F_2@]代表F_2.gif,……,[@F_39@]代表F_39.gif
待表单提交过了后需要将表单里诸如[@F_1@]的换成对应的地址,就是将[@F_1@]换成<img src="images/F_1.gif">,[@F_2@]换成<img src="images/F_2.gif">,……,[@F_39@]换成<img src="images/F_39.gif">然后再将数据插入到数据库,由于正则表达式这块知识比较薄弱,所以老是出错,现我将自己的表达式写上,请各路高手给予指点<?php
$ereg="/ˆ(\[@)F_[0-3]?[0-9]{1}(@\])$/";
$str="[@F_12@]";
$rep_str=preg_match_all($ereg,$str,$counts);
if($rep_str>0){
echo "匹配了:".$rep_str."次";
}else{
echo "匹配了零次";
}?>
显示匹配零次然后改为
<?php
$ereg="/ˆ(\[@)F_[0-39]{1}(@\])$/";
$str="[@F_12@]";
$rep_str=preg_match_all($ereg,$str,$counts);
if($rep_str>0){
echo "匹配了:".$rep_str."次";
}else{
echo "匹配了零次";
}?>
还是显示“匹配了零次”由于情况急切,所以曹某人跪求各路高手指点,在此谢过了!
格式是这样的[@F_1@]代表F_1.gif,[@F_2@]代表F_2.gif,……,[@F_39@]代表F_39.gif
待表单提交过了后需要将表单里诸如[@F_1@]的换成对应的地址,就是将[@F_1@]换成<img src="images/F_1.gif">,[@F_2@]换成<img src="images/F_2.gif">,……,[@F_39@]换成<img src="images/F_39.gif">然后再将数据插入到数据库,由于正则表达式这块知识比较薄弱,所以老是出错,现我将自己的表达式写上,请各路高手给予指点<?php
$ereg="/ˆ(\[@)F_[0-3]?[0-9]{1}(@\])$/";
$str="[@F_12@]";
$rep_str=preg_match_all($ereg,$str,$counts);
if($rep_str>0){
echo "匹配了:".$rep_str."次";
}else{
echo "匹配了零次";
}?>
显示匹配零次然后改为
<?php
$ereg="/ˆ(\[@)F_[0-39]{1}(@\])$/";
$str="[@F_12@]";
$rep_str=preg_match_all($ereg,$str,$counts);
if($rep_str>0){
echo "匹配了:".$rep_str."次";
}else{
echo "匹配了零次";
}?>
还是显示“匹配了零次”由于情况急切,所以曹某人跪求各路高手指点,在此谢过了!
$rep_str=preg_match($pattern,$str);
if($rep_str>0){
echo "匹配了:".$rep_str."次";
}else{
echo "匹配了零次";
你用我的思路来做吧
$a='[@F_1@]';
Echo '<img src="',Trim($a,'[@]'),'.gif">';
<?php
$ereg="/^\[@(F_[0-3]?[0-9]{1})@\]$/";//改改就好,当然还可以写成"/^\[@(F_\d+)@\]$/"甚至更简单的
$str="[@F_12@]";$rep_str=preg_match_all($ereg,$str,$counts);if($rep_str>0){echo "匹配了:".$rep_str."次";
}else{echo "匹配了零次";}echo "<img src='images/".$counts[1][0].".gif'>";//再送个地址给楼主?>记得结贴,我要全部分数
近期做一个有表情的评论,在form中选择了表情以后相应的符号会输入到表单中
格式是这样的[@F_1@]代表F_1.gif,[@F_2@]代表F_2.gif,……,[@F_39@]代表F_39.gif
待表单提交过了后需要将表单里诸如[@F_1@]的换成对应的地址,就是将[@F_1@]换成<img src="images/F_1.gif">,[@F_2@]换成<img src="images/F_2.gif">,……,[@F_39@]换成<img src="images/F_39.gif">然后再将数据插入到数据库,
TEXT;
echo preg_replace('/\[@(F_\d+)@\]/is', '<img src="images/\\1.gif">', $s);近期做一个有表情的评论,在form中选择了表情以后相应的符号会输入到表单中
格式是这样的<img src="images/F_1.gif">代表F_1.gif,<img src="images/F_2.gif">代表F_2.gif,……,<img src="images/F_39.gif">代表F_39.gif
待表单提交过了后需要将表单里诸如<img src="images/F_1.gif">的换成对应的地址,就是将<img src="images/F_1.gif">换成<img src="images/F_1.gif">,<img src="images/F_2.gif">换成<img src="images/F_2.gif">,……,<img src="images/F_39.gif">换成<img src="images/F_39.gif">然后再将数据插入到数据库,
其中二楼给出的正则表达式是正确的,三楼的想法化复杂为简单,很好!
下面我给出我的代码,以供参考
$pre_content=$_POST['content'];/*$pre_content是没有处理前传过来的评论框里的内容,下面就是要对评论框的内容进行替换,然后存到数据库*/ $ereg_1="/\[@F_[0-3]?[0-9]{1}@\]/";/*正则表达式*/
$num=$rep_str=preg_match_all($ereg_1,$pre_content,$counts);
if($num>0){
$ereg_2="@";
for($j=0;$j<$num;$j++){
$string_2[$j]=spliti($ereg_2,$counts[0][$j]);
$replace_str="<img src='images/".$string_2[$j][1].".gif'>";
$pre_content=preg_replace("/\\".$string_2[$j][0]."@".$string_2[$j][1]."@"."\\".$string_2[$j][2]."/",$replace_str,$pre_content);/*注意,此处最容易出错因为每个要替换的都有"[]"而这个符号是正则表达式里面的需要进行格式化,否则就会出现[<img src="F_12">]等类似的情况*/
}
} $content=$pre_content;/*$content是处理后的内容*/ echo $content;感谢大家的参与