[英]preg replace regex extract string
我正在嘗試從此字符串中提取3BF50B3A9BCB2BC8E40256F30B7F2C22令牌。
$longtext="rt%3D280'; HdfJson['postToken'] = '3BF50B3A9BCB2BC8E40256F30B7F2C22';HdfJson['googleUrlHl'] =";
$token=preg_replace("/(\[\'postToken']\s\=\s)(\'[a-zA-Z0-9]+\')(\;)/u","$2",$longtext);
echo $token;
rt%3D280'; HdfJson['postToken'] = HdfJson['googleUrlHl'] =
如何僅提取令牌 ?
您還需要用.*
匹配前導字符和后繼字符,以便僅將整行替換為您指定的組。
.*(?:\[\'postToken']\s\=\s)\'([a-zA-Z0-9]+)\';.*
| |
Here Here
碼:
<?php
$longtext="rt%3D280'; HdfJson['postToken'] = '3BF50B3A9BCB2BC8E40256F30B7F2C22';HdfJson['googleUrlHl'] =";
$token=preg_replace("~.*(?:\[\'postToken']\s\=\s)\'([a-zA-Z0-9]+)\';.*~u","$1",$longtext);
echo $token;
?>
輸出:
3BF50B3A9BCB2BC8E40256F30B7F2C22
您不需要使用preg_replace來執行此操作,如果您想從字符串中提取某些內容而不進行修改, preg_match
使用的函數是preg_match
。 例:
$str = "rt%3D280'; HdfJson['postToken'] = '3BF50B3A9BCB2BC8E40256F30B7F2C22';HdfJson['googleUrlHl'] =";
$re = '/\QHdfJson['postToken'] = '\E([[:xdigit:]]+)';/';
// ↑_____________↑
if (preg_match($re, $str, $m)) // |
$token = $m[1]; // first capturing group
在\\Q
和\\E
所有特殊字符都將被忽略(模式定界符除外) 。 將文字字符串復制/粘貼到模式中而不用問太多必須轉義或不轉義的問題,這很有用。 (有關信息,僅[
需要轉義)
[:xdigit:]
字符類僅包含十六進制字符。 但是,如果您想更加嚴格,可以將其更改為不包含[af]
[A-F0-9]
[af]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.