第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Preg_match_all() - 正則表達(dá)式太大

Preg_match_all() - 正則表達(dá)式太大

PHP
慕慕森 2022-07-09 16:30:56
我怎樣才能改進(jìn)以下preg_match_all模式,所以我沒有這個(gè)警告:preg_match_all():編譯失敗:正則表達(dá)式在偏移量 32036 處太大    $sql = "SELECT skills FROM weighted_skills_industry     WHERE industry = 'Engineering' ORDER by LENGTH(skills) DESC LIMIT 3000";    $result = $con->query($sql);     while($row = $result->fetch_assoc()) {         $skill[] = $row['skills'];      }        $pattern = '~(?<![\w-])(?:' . implode('|', array_map(function($i) { return preg_quote($i, '~'); }, $skill)) . ')(?![\w-])~i';        if (preg_match_all($pattern, $text, $matchWords)) {          //write something        }
查看完整描述

2 回答

?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

我可能會(huì)改用以下查詢:


SELECT skills

FROM weighted_skills_industry 

WHERE

    industry = 'Engineering' AND

    skills REGEXP CONCAT('[[:<:]]', ?, '[[:>:]]')

ORDER BY

    LENGTH(skills) DESC

LIMIT 3000;

對(duì)于?占位符,您可以綁定$textPHP 代碼中的變量。上述邏輯將返回文本中可以找到的所有技能。


查看完整回答
反對(duì) 回復(fù) 2022-07-09
?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊

如果我理解正確,您將從數(shù)據(jù)庫中獲取技能列表(作為關(guān)鍵字?jǐn)?shù)組),并希望檢查字符串是否$text包含這些單詞中的任何一個(gè)。


您現(xiàn)在使用的可能是要走的路,但我懷疑如果您有數(shù)千個(gè)這樣的單詞,您是否可以縮短正則表達(dá)式。


您可以簡(jiǎn)單地遍歷關(guān)鍵字并對(duì)每個(gè)關(guān)鍵字執(zhí)行正則表達(dá)式檢查。這有點(diǎn)慢,但只要找到任何單詞(如果需要),您就可以打破循環(huán):


foreach ($skills as $skill) {

  if (preg_match('~(?<![\w-])(?:' . preg_quote($skill, '~') . ')(?![\w-])~i', $text, $matches)) {

    // do stuff with $matches[0] (found keyword)

    // ...

    break; // <- if finding one of these words is enough

  }

}

請(qǐng)注意,您還可以\b在正則表達(dá)式中使用來檢查單詞邊界??紤]:


\bword\b

代替:


(?<![\w-])word(?![\w-])

或者,有一些方法可以增加模式大小限制,但您必須重新編譯 PHP。


查看完整回答
反對(duì) 回復(fù) 2022-07-09
  • 2 回答
  • 0 關(guān)注
  • 131 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)