2 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用單個(gè)正則表達(dá)式方法:
'~^\h*price\h*\|\h*\K.*\S~m'
詳
^
- 一行的開始(由于修飾符)m
\h*
- 0+水平空格price
- 你的靜態(tài)單詞\h*\|\h*
-|
用 0+ 個(gè)水平空格括起來(lái)\K
- 匹配重置運(yùn)算符,丟棄到目前為止匹配的文本.*\S
- 除換行符以外的 0 個(gè)以上字符,盡可能多,直到行上的最后一個(gè)非空格字符(包括它)。
if (preg_match('~^\h*' . preg_quote($word, '~') . '\h*\|\h*\K.*\S~m', $data, $match)) { echo $match[0]; }

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
Wiktor的答案似乎不錯(cuò),但您可能希望將數(shù)據(jù)轉(zhuǎn)換為數(shù)組。key -> value
如果是這種情況,您可以執(zhí)行以下操作:
$avp = [];
if (preg_match_all('/^ \h* (?<key>[^|]+?) \h* \| \h* (?<value>[^$]+?) \h* $/mx', $data, $matches, PREG_SET_ORDER)) {
foreach ($matches as [, $key, $value]) {
$avp[$key] = $value;
}
}
$word = 'price';
echo $avp[$word]; // Lets talk about our support.
演示:https://3v4l.org/uMBAg
- 2 回答
- 0 關(guān)注
- 120 瀏覽
添加回答
舉報(bào)