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

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

使用 PHP 從字符串中刪除標點符號但不在收縮內

使用 PHP 從字符串中刪除標點符號但不在收縮內

PHP
達令說 2021-06-30 06:27:41
我正在編寫將文本分解成單詞并執行諸如計算單詞大小之類的代碼。我想出了這個(經過一些搜索):$text = preg_replace("/[^[:alnum:][:space:]]/u", ' ', $text);$words = mb_split( ' +', $text );但是,收縮不起作用,因為撇號和單引號看起來相同(因為它們是)。我需要一種方法來分離單詞但包括收縮。目前,我已經包含了所有我能想到的停用詞的縮寫,但這是最不令人滿意的。我不擅長正則表達式,需要一些建議。盡管我發布了自己的不雅解決方案,但我將這個問題懸而未決,希望能得到更完美的答案。
查看完整描述

2 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

我已經在這方面工作了一段時間。評論和 Taha Paksu 非常有效的解決方案有助于幫助我思考問題。除了重音字母之外,Taha Paksu 的解決方案完全隔離了單詞。谷歌搜索似乎表明 RegEx 對非 ascii 字符不太友好。


正是當我放棄嘗試做正則表達式伏都教(任何可以得到我最深切尊重的人)時,我才想到了這個不太優雅的 hack。


$text = "Testing text. Café is spelled true. And pokémon too... ‘bad quotes’. (brackets)... L?wen, B?ren, V?gel und K?fer sind Tiere. That’s what I said.";

$text = str_replace(array('’',"'"), '000AP000', $text);

$text = str_replace("-", '000HY000', $text);

$text = preg_replace("/[^[:alnum:][:space:]]/u", ' ', $text);

$text = str_replace('000AP000', "'", $text);

$text = str_replace('000HY000', "-", $text);

$text = str_replace(array("' ",'- ','  '," '",' -','  '), ' ', $text);

$words = mb_split( ' +', $text );

它使用兩個統計上不太可能的字符串作為占位符,清理其余的字符串,將連字符和撇號放回原處,然后取出任何接觸空格(和多個空格)的東西。它適用于我能找到的所有東西。


如果可以,我想找到一個不那么繁瑣的解決方案,但我的正則表達式技能可能無法勝任這項任務(即使打開了備忘單)。


查看完整回答
反對 回復 2021-07-02
  • 2 回答
  • 0 關注
  • 194 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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