亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 foreach 循環中的字符串與 PHP 中的 preg_split 匹配

如何將 foreach 循環中的字符串與 PHP 中的 preg_split 匹配

PHP
呼喚遠方 2022-09-03 14:45:13
我有2個部分的數據與這個分離器|$data = 'hello | Hello thereprice | Lets talk about our support.how are you ?| Im fine ';我的靜態單詞是$word= 'price'我的代碼 $msg = array_filter(array_map('trim', explode("\n", $data))); foreach ($msg as $singleLine) {            $partition = preg_split("/[|]+/", trim($singleLine), '2');            $part1 = strtolower($partition[0]);            }如何匹配數據?我需要結果如下:Let's talk about our support
查看完整描述

2 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

您可以使用單個正則表達式方法:

'~^\h*price\h*\|\h*\K.*\S~m'

觀看正則表達式演示

  • ^- 一行的開始(由于修飾符)m

  • \h*- 0+水平空格

  • price- 你的靜態單詞

  • \h*\|\h* - |用 0+ 個水平空格括起來

  • \K- 匹配重置運算符,丟棄到目前為止匹配的文本

  • .*\S- 除換行符以外的 0 個以上字符,盡可能多,直到行上的最后一個非空格字符(包括它)。

PHP 代碼

if (preg_match('~^\h*' . preg_quote($word, '~') . '\h*\|\h*\K.*\S~m', $data, $match)) {
    echo $match[0];
}


查看完整回答
反對 回復 2022-09-03
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

Wiktor的答案似乎不錯,但您可能希望將數據轉換為數組。key -> value


如果是這種情況,您可以執行以下操作:


$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


查看完整回答
反對 回復 2022-09-03
  • 2 回答
  • 0 關注
  • 124 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號