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

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

preg_match 從字符串返回多個值

preg_match 從字符串返回多個值

PHP
繁星coding 2021-12-03 15:05:12
我想從一些 URL 中提取兩個值。示例網址:cricket-ck-game-playhand-ball-hb-game-playvolley-ball-vb-game-playsoccer-sc-game-play我想分別提取完整的游戲名稱及其短名稱,忽略-game-playURL 末尾的部分。我嘗試了以下代碼,它返回“ck”、“hb”、“vb”、“sc”,但不返回全名。preg_match("/(?<=-)[^-]*(?=-game-play)/", $uri, $game);我得到的實際結果:array(1) {  [0]=>  string(2) "ck"}預期成績:case:1 (In case of example 1) -  array(2) {  [0]=>  string(7) "cricket"  [1]=>  string(2) "ck"}case:2 (In case of example 2) - array(2) {  [0]=>  string(9) "hand-ball"  [1]=>  string(2) "hb"  }
查看完整描述

3 回答

?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

preg_match("/(.+)-([a-z]{2})-/i", $uri, $game);

抓取以破折號為邊界的兩個字母之前的所有內容,然后抓取這兩個字母。


查看完整回答
反對 回復 2021-12-03
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

也許,這個表達可能有點接近你的想法:

(.*)-(.{2})(?=-game-play)

演示 1

或者

(.*)-(.*)(?=-game-play)

演示 2


查看完整回答
反對 回復 2021-12-03
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

如果短名稱之前的部分總是超過 3 個字符并且短名稱總是由 2 個字符組成,[a-zA-Z]您可以使用 2 個捕獲組,使用量詞{3,}{2}匹配字符。

\b(\w{3,}(?:-(?:\w{3,}))*)-(\w{2})-game-play\b

解釋

  • \b 詞界

  • (捕獲組 1

    • \w{3,} 匹配一個單詞字符 3 次以上

    • (?:-\w{3,})*重復 0+ 次匹配-和 3 個或更多單詞字符

  • ) 親密團體

  • (捕獲組 2

    • [a-zA-Z]{2} 匹配單詞字符 2 次(根據評論)

  • ) 關閉群組

  • -game-play 字面匹配

  • \b 詞界

正則表達式演示php 演示

另一種選擇是使用preg_split并在捕獲組中由連字符包圍的 2 個字符 az 上拆分并匹配其余字符:

$pattern = "/-([a-z]{2})-.*/";

$str = "cricket-ck-game-play";

print_r(preg_split($pattern, $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY));

結果


Array

(

    [0] => cricket

    [1] => ck

)


查看完整回答
反對 回復 2021-12-03
  • 3 回答
  • 0 關注
  • 286 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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