php非法字元
① php中正規表達式匹配非法字元怎麼寫
非法字元你用htmlspecialchars不就搞定了,你是要匹配 尖括弧么?正在這樣寫/[<>]*/i
② php代碼頁面打開亂碼怎麼解決
當在瀏覽器中打開PHP頁面時,如果出現了亂碼,可能是由於以下幾個原因導致的:
文件編碼不一致
確保PHP文件的編碼格式和HTML頁面的編碼格式一致。常見的編碼格式有UTF-8和GBK等。
可以使用編輯器打開PHP文件,查看文粗前斗件的編碼格式,並在HTML頁面中添加<meta charset="編碼格式">指定頁面的編碼格式,例如:
html
<meta charset="UTF-8">
PHP文件中有BOM
BOM(Byte Order Mark)是一種在UTF-8編碼中用來標識編碼方式的特殊字元。如果PHP文件中含有BOM,會導致瀏覽器無法正確悔激解析PHP代碼,從而出現亂碼。
可以使用編輯器打開PHP文件,將文件編碼格式修改為UTF-8 without BOM。
PHP文件中含有非法字元
在PHP文件中含有非法字元也可能導致瀏覽器無法正確解析PHP代碼,從而出現亂碼。
可以使用編輯器打開PHP文件,檢查文件中是否含有非法字元,並將其刪除。
伺服器未正確配置
如果以上方法都無法解決問題,可能是由於伺服器未正確配置導致的。可以嘗試重新配置伺服器的字元集設置,例如在Apache伺服器中可以通過修改httpd.conf文件中的AddDefaultCharset指令來指定默認字元集,例如:
AddDefaultCharset UTF-8
以上是一些岩磨可能導致PHP頁面打開亂碼的原因和解決方法,您可以根據具體情況進行排查和處理。
③ 非法字元是什麼意思
比較通用的來說,這些字元會造成程序系統的崩潰,降低程序安全性,增加程序使用難度,這些字元可以叫非法字元。
其實有的非法字元是程序設計者在程序中定義的、或者可以避免的字元,有些字元在某些人眼裡可能非法,但是在另外一些高級設計師眼裡不一定就是非法。
不論asp,php,或者資料庫,或者平時使用的小軟體都會存在的。
非法字元串有:',*%()=
④ 求教PHP驗證用戶名或密碼包含非法字元
例子代碼:
$user="sdafdsg";
if(preg_match("/^[0-9a-zA-Z]{4,21}$/",$user)){
echo"OK";
}
下面是PHP官方對preg_match函數的介紹
preg_match
(PHP 4, PHP 5)
preg_match—執行一個正則表達式匹配
說明
intpreg_match(string$pattern,string$subject[,array&$matches[,int$flags= 0[,int$offset= 0]]] )
搜索subject與pattern給定的正則表達式的一個匹配.
參數
pattern
要搜索的模式,字元串類型。
subject
輸入字元串。
matches
如果提供了參數matches,它將被填充為搜索結果。$matches[0]將包含完整模式匹配到的文本,$matches[1]將包含第一個捕獲子組匹配到的文本,以此類推。
flags
flags可以被設置為以下標記值:
PREG_OFFSET_CAPTURE
如果傳遞了這個標記,對於每一個出現的匹配返回時會附加字元串偏移量(相對於目標字元串的)。 注意:這會改變填充到matches參數的數組,使其每個元素成為一個由 第0個元素是匹配到的字元串,第1個元素是該匹配字元串 在目標字元串subject中的偏移量。
offset
通常,搜索從目標字元串的開始位置開始。可選參數offset用於 指定從目標字元串的某個未知開始搜索(單位是位元組)。
Note:
使用offset參數不同於向preg_match()傳遞按照位置通過substr($subject, $offset)截取目標字元串結果, 因為pattern可以包含斷言比如^,$或者(?<=x)。 比較:
<?php
$subject="abcdef";
$pattern='/^def/';
preg_match($pattern,$subject,$matches,PREG_OFFSET_CAPTURE,3);
print_r($matches);
?>
以上常式會輸出:
Array
(
)
當這個示例使用截取後傳遞時
<?php
$subject="abcdef";
$pattern='/^def/';
preg_match($pattern,substr($subject,3),$matches,PREG_OFFSET_CAPTURE);
print_r($matches);
?>
將會產生匹配
Array
(
[0] => Array
(
[0] => def
[1] => 0
)
)
返回值
preg_match()返回pattern的匹配次數。 它的值將是0次(不匹配)或1次,因為preg_match()在第一次匹配後 將會停止搜索。preg_match_all()不同於此,它會一直搜索subject直到到達結尾。 如果發生錯誤preg_match()返回FALSE。
更新日誌
版本
說明
5.3.6 如果offset比subject的長度還要大則返回FALSE。
5.2.2 命名子組可以接受(?<name>),(?'name')以及(?P<name>)語法。之前版本僅接受(?P<name>)語法。
4.3.3 增加了參數offset.
4.3.0 增加了標記PREG_OFFSET_CAPTURE。
4.3.0 增加了參數flags。
範例
Example #1 查找文本字元串"php"
<?php
//模式分隔符後的"i"標記這是一個大小寫不敏感的搜索
if(preg_match("/php/i",".")){
echo"Amatchwasfound.";
}else{
echo"Amatchwasnotfound.";
}
?>
⑤ php 清除字元串非法字元
$str="x80x802018";
$code=array(
"x80",
" ",
);
$str=str_replace($code,'',$str);
var_mp($str);
可以這樣把特殊字元去掉,發現有什麼特殊字元,就加在code數組裡面,最後列印出來的長度就只有4了。
⑥ php怎樣過濾非法字元防止sql注入
htmlspecialchars($_POST['欄位']),用這個函數就可以將一些特殊字元進行過濾轉義。你可以去看看這個函數的說明。