各位兄弟,我在处理正则表达式的时候出现了一个问题,具体如下:
我使用ereg("$<?//$u", $temp)时,如果$u里面包含了正则表达式中的特殊字符,则这个函数返回值会不准确,如:$u='*'时
现在我想了一个方法就是将所有的特殊字符前加一个'',但我怕会有遗漏,所以那位兄弟可以告诉我所有的特殊字符,同时如何处理才可以只在这些特殊字符前加'',而对其它字符没有影响。
如果那为兄弟有更好的处理方法,请告诉我一下!
---------------------------------------------------------------
函数:AddSlashes()
--------------------------------------------------------------------------------
字符串处理函数库
AddSlashes
字符串加入斜线。
语法: string addslashes(string str);
返回值: 字符串
函数种类: 资料处理
内容说明
本函数使需要让数据库处理的字符串,引号的部份加上斜线,以供数据库查询 (query) 能顺利运作。这些会被改的字符包括单引号 (')、双引号 (")、反斜线 backslash (\) 以及空字符 NUL (the null byte)。
---------------------------------------------------------------
ereg("$<?//$u", $temp)
^--不对吧?匹配空行?
---------------------------------------------------------------
http://www.phpe.net/articles/21.shtml
http://www.phpe.net/articles/151.shtml
http://www.phpe.net/articles/22.shtml
---------------------------------------------------------------
你想实现什么功能?特殊字符只能自己加,类似这样
$patterns=array('(\*)','(\.)','(\[)','(\])');
$replace=array('\\\1','\\\1','\\\1','\\\1');
$u = preg_replace ($patterns, $replace, $u);
---------------------------------------------------------------
给你个js,看看能用吧?
1<script language="Javascript">
2<!--
3function ckform() {
4with (document.addform){
5if(name.value=="") {
6alert("您必须输入您的名字!\nPlease input your names!");
7name.focus();
8return false;
9}
10
11if(email.value=="") {
12alert("您必须输入您的E-mail地址!\nPlease input your mail!");
13email.focus();
14return false;
15}
16var pattern=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\\.[a-zA-Z0-9_-])+/;
17if(!pattern.test(email.value)){
18alert("请输入正确的邮箱地址!\nE-mail not accept!");
19email.focus();
20return false;
21}
22
23var pattern=/([!\@\\#\$%^&*()+ ¦\\\\{}:;?<>`])+/;
24if((pattern.test(name.value))) {
25alert("您的姓名里不能包含非法字符!\nName not accept!");
26name.focus();
27return false;
28}
29var pattern=/^(http:\/\/)[A-Za-z0-9\\-]+/;
30if( (!pattern.test(url.value)) && (url.value!="http://") ) {
31alert("请正确输入您的主页!\nHomepage not accept!");
32url.focus();
33return false;
34}
35var pattern=/([!\@\\#\$%^&*+ ¦\\\\{}?<>`])+/;
36if( (pattern.test(subject.value)) ¦ ¦ (subject.value=="") ) {
37alert('留言主题不能为空且不能有非法字符!\n Subject not accept!');
38subject.focus();
39return false;
40}
41var pattern=/([!\@\\#\$%^&*+ ¦\\\\{}?<>`])+/;
42if( (pattern.test(message.value)) ¦ ¦ (message.value=="") ) {
43alert('您的留言不能为空且不能有非法字符!\n Message not accept!');
44message.focus();
45return false;
46}
47}
48return true;
49}
50//-->
51</script>
---------------------------------------------------------------
试试 preg_quote
http://www.php.net/manual/zh/function.preg-quote.php
---------------------------------------------------------------
这个意思呀?
echo preg_quote("[]?+.$^(){}"); // out \[\]?\+\.\$^\(\)\{\}
---------------------------------------------------------------
看一下php的帮助文件有介绍
就是这样用。
\*\[\]