簡體   English   中英

PHP正則表達式-在這種情況下,我現在在做什么錯?

[英]PHP regex - what am I doing wrong now in this case?

使用正則表達式:

$pattern = "/adminvalues = \"\([^']+, '[^']+', MD5\('[^']+'\), '[^']+','[^']+','[^']+',[^']+,[^']+\)\";/";
preg_match($pattern, $data, $results);
print_r($results);

搜索以下文本(括號內的值可能會發生變化,因此需要正則表達式...):

adminvalues = "(NULL, 'Admin12345', 'MD5(Admin12345)', 'Admin12345', 'Admin12345', 5, 0, 0)";

因此,我正在尋找一種模式(在reg-ex中),該模式基本上與以下各項(我認為...)匹配:

[adminvalues = "(] [any character] [, '] [any character] [', MD5('] [any character] ['), '] [any character] [', '] [any character]  [', ] [any character] [, ] [any character] [, ] [any character] [)";]

其中: 任何字符都是(字母/數字/符號)的任意組合中的一個或多個

使用頂部的PHP代碼沒有找到任何匹配項-所以我顯然做錯了! 我只是無法自己發現錯誤。 (我真的只是今天早上才開始使用正則表達式...)我做錯了什么? :)

解決:(感謝Amal Murali)在讀取用作$data的php腳本時使用htmlspecialchars()(而不僅僅是顯示內容)

嘗試以下正則表達式:

$pattern = <<<PATTERN
~
  adminvalues\s*=\s*
  "
  \(                  
    [^,]+,\s*
    '[^']+',\s*
    MD5\('[^']+'\),\s*
    '[^']+',\s*
    '[^']+',\s*
    \d,\s*
    \d,\s*
    \d\s*
  \)
  ";
~xm
PATTERN;

Regex101演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM