① php ereg函數
preg_match preg_match_all preg_replace preg_replace_callback
② php5.3提示Function ereg() is deprecated Error問題解決方法
本文實例講述了php5.3提示Function
ereg()
is
deprecated
Error問題解決方法。分享給大家供大家參考。具體實現方法如下:
一、問題:
PHP
5.3
ereg()
無法正常使用,提示「Function
ereg()
is
deprecated
Error」是因為它長ereg
函數進行了升級處理,需要像preg_match使用/
/來規則了,當然也是php5.3把ereg給廢掉的節奏了。
PHP
5.3
ereg()
無法正常使用,提示「Function
ereg()
is
deprecated
Error」。
問題根源是php中有兩種正則表示方法,一個是posix,一個是perl,php6打算廢除posix的正則表示方法所以後來就加了個preg_match。此問題解決辦法很簡單,在ereg前加個過濾提示信息符號即可:把ereg()變成@ereg()。這樣屏蔽了提示信息,但根本問題還是沒有解決,php在5.2版本以前ereg都使用正常,在5.3以後,就要用preg_match來代替ereg。所以就需要變成這樣。
原來:ereg("^[0-9]*$",$page)變成:preg_match("/^[0-9]*$/",$page)
特別提醒:posix與perl的很明顯的表達區別就是是否加斜杠,所以與ereg相比,後者在正則的前後分別增加了兩個"/"符號,不能缺少。
例如:
改前:
復制代碼
代碼如下:function
inject_check($sql_str)
{
$sql_str
=
strtolower($sql_str);
return
eregi('fopen|post|eval|select|insert|and|or|update|delete|'|/*|*|../|./|union|into|load_file|outfile',
$sql_str);
//
進行過濾
}
二、解決方法:
找到代碼所在的文件位置:
復制代碼
代碼如下:function
inject_check($sql_str)
{
$sql_str
=
strtolower($sql_str);
return
preg_match('/fopen|post|eval|select|insert|and|or|update|delete|'|/*|*|../|./|union|into|load_file|outfile/',
$sql_str);
//
進行過濾
}
注意:一定要加'/'開頭與結束。此段參考:http://www.jb51.net/article/38857.htm
補充:此問題在php5.2之前版本不會出現。
希望本文所述對大家的PHP程序設計有所幫助。
③ php中ereg_replace()函數用法詳解
ereg_replace (PHP 3, PHP 4, PHP 5)-- 正則表達式替換
php 手冊上有更詳細的介紹,不過推薦preg_replace() 函數使用了 Perl 兼容正則表達式語法,而且速度更快。
④ PHP正則表達式ereg的問題
eregi 和 ereg_replace 這兩個函數到5.3以後就被廢棄了,可以使用preg_match, preg_replace進行替換,舉個例子:
<?php
$wenben="hello,world";
print_r(preg_match('/[a-z]*/i',$wenben));
$result=preg_replace('/[a-z]*/i',"TiHuan",$wenben);
var_mp($result);
preg_replace,就是替換匹配的字元串,並返回替換後的結果。
preg_match, 就是匹配字元串,返回匹配的結果,為0或者1,當第一次匹配成功,就不繼續匹配了。
這些文件函數,你都可以參考php 官方手冊:
http://cn2.php.net/manual/zh/function.preg-replace.php
⑤ 如何實現"三級欄目_二級欄目_一級欄目_網站名稱
$this->valuePositionName = $tinfos['typename'].$this->SplitSymbol.$this->valuePositionName;修改為:$this->valuePositionName = $this->valuePositionName.$this->SplitSymbol.$tinfos['typename'];
接下來將模板的標題標簽
{dede:field.title/} - {dede:global.cfg_webname/}修改為:{dede:field.title function='ereg_replace(" - "," - ",@me)'/} - {dede:global.cfg_webname/}即可。
如果您對欄目中間的連接符不滿意,可以修改include/arc.listview.class.php,找到53行
$this->Fields['title'] = ereg_replace("[]"," / ",$this->TypeLink->GetPositionLink(false));
把/ 刪除 注意留一個空格 " ?"
這樣在模板標題標簽部分就可以修改各級欄目間的連接符
另外一種方法:
其實模板可以不用修改,只要修改以下兩個地方變可以實現:三級欄目_二級欄目_一級欄目_網站名
首先:將 include/arc.listview.class.php 文件的第53行:
$this->Fields['title'] = ereg_replace("[]"," / ",$this->TypeLink->GetPositionLink(false));
中的/ 替換為 _ 這個樣成功去除標題中的"/"替換為了"_"
⑥ PHP5.3x ereg_replace改成preg_replace
preg_replace的正則表達式前後要加 /
//這個是把連續的空格替換成下劃線
$file_name=preg_replace("/[]+/","_",$file_name);
//我估計$pattern變數里也沒有加/
$valid_file=preg_replace("/".$pattern."/","_",trim($fname));
⑦ PHP 中ereg函數的應用問題,這函數是怎麼用的
先看看他的參數ereg(匹配模式,字元串,返回數組)。
其中匹配模式一般是正則表達式,如你的例子中正則模式是linux 下的grep命令的匹配,[[:alpha:]] 代表字母[[:alnum:]] 代表字母與數字字元;第二個參數是字元串,指你需要用正則模式來匹配檢驗的對象;
最後返回匹配結果,放到一個數組中,var_mp函數是列印數組的函數,$register即你這段代碼匹配的結果數組。
其實不明白最好是看手冊,手冊才是王道啊。。
⑧ php里ereg_replace(),給pattern里的特殊字元加\轉義,因為pattern里有用戶提交數據,有什麼辦法可以辦到
$pattern = $_POST['name'];
$pattern = addslashes($pattern);
轉義單引、雙引、null、\
對於html、php特殊字元還可以htmlentities($pattern),字元處理、協議處理是php強項,是我的話首先就在javascript中把這些字元過濾掉。
⑨ php中ereg() ,preg_match() 有啥區別
ereg是早先的,preg_match是後加的,php6要廢除posix正則了,不過很奇怪,很多老外的經典教程里只寫posix正則,不寫perl型的