在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/PHP/ 怎么匹配出來(lái)一個(gè)中英文混雜的字符串里的英文?

怎么匹配出來(lái)一個(gè)中英文混雜的字符串里的英文?

字符串是從doc文本里取出來(lái)的;
比如這樣;

冠捷科技集團(tuán)

冠捷科技集團(tuán)成立于1967年,并于1999年10月在香港及新加坡兩地同步上市,為全球最大的個(gè)人計(jì)算機(jī)顯示器及第四大液晶電視制造商。
冠捷早于1990領(lǐng)先業(yè)界在大陸布局,如今已有海內(nèi)外十二大制造基地、七大銷(xiāo)售中心及四大研發(fā)中心。集團(tuán)更創(chuàng)立自家品牌 AOC 及 Envision ,并分別于2009年及2011年取得飛利浦品牌顯示器及電視在全球及中國(guó)的獨(dú)家分銷(xiāo)權(quán)。2012年4月,集團(tuán)與飛利浦成立合資公司TP Vision,接管飛利浦的電視業(yè)務(wù),負(fù)責(zé)飛利浦品牌電視在全球主要市場(chǎng)的產(chǎn)品設(shè)計(jì)、生產(chǎn)、分銷(xiāo)、推廣及銷(xiāo)售業(yè)務(wù)。2014年6月,TP Vision成為冠捷的全資公司。
目前,集團(tuán)顯示器主要產(chǎn)品有:智能顯示器,交互式電子白板, 4K * 2K高分辨率顯示器,窄邊框顯示器等;電視主要產(chǎn)品有:4K * 2K高分辨率產(chǎn)品,智能電視、網(wǎng)絡(luò)電視,3D窄邊和纖薄電視產(chǎn)品等。
福建捷聯(lián)電子有限公司為冠捷科技全資子公司,主要從事液晶顯示設(shè)備的研究開(kāi)發(fā)、生產(chǎn)制造和銷(xiāo)售推廣業(yè)務(wù),產(chǎn)品70%外銷(xiāo),2014年產(chǎn)值204億元人民幣,出口額22億美元。 

TPV Technology Group was founded in 1967 and has been publicly listed on the Hong Kong & Singapore stock exchanges since October 1999. Now it has become the world’s largest Monitor and fourth-largest LCD TV manufacturer
TPV stayed ahead of competitors to gain a foothold in mainland China as early as in 1990. So far TPV has established 12 manufacturing bases, seven sales centers and four R&D centers.TPV has distributed its products globally under its own brands-AOC and Envision. Since 2009 TPV has been exclusive licensee of the Philips brand for monitors and since 2011 it has sold Philips TVs in China. ?In April, 2012, TPV founded TP Vision as a joint venture together with Philips to take over the latter’s TV business of Design, production, distribution, marketing and selling around the world. Since June, 2014, TPV owns 100% of TP Vision.
Currently, the main products of monitor include Smart Monitor, Interactive Electronic Whiteboard, 3D Entertainment Monitor, 4K*2K High Resolution Monitor, Narrow-Frame Monitor. The main TV products include 4K*2K High Resolution TV, Smart TV, Internet TV, 3D Narrow-Frame and Slim TV.
TPV Electronics (Fujian) Co., Ltd, as a wholly owned subsidiary of TPV Group, specializes in R&D, manufacturing and marketing of display products. Around 70% of products are sold abroad. In 2014, its annual value of production reached 20.4 billion RMB and export exceeded US$ 2.2 billion.

/**
 * 取出所以的中文內(nèi)容;
 *
 * @param string $charset
 * @return bool|string
 */
function getFileDetailCn($charset = 'utf8')
{
    $wordFileDetail = getWordFileDetail();
    if($charset=='gb2312'){
        if(!preg_match_all("/^[".chr(0xa1)."-".chr(0xff)."]+/", $wordFileDetail, $match)){
            return false;
        }
        return implode('',$match[0]);
    }

    if($charset=='utf8'){
        //只能匹配出漢字,不能匹配出標(biāo)點(diǎn)符號(hào)
        if(!preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $wordFileDetail, $match)){
            return false;
        }
        return implode('',$match[0]);
    }
    return false;
}

我目前的做法是,用正則匹配出來(lái)中文,然后用str_replace把中文替換成空,就拿到了英文;

但是,在開(kāi)發(fā)過(guò)程中,有兩個(gè)問(wèn)題;
一個(gè)是getFileDetailCn這個(gè)方法,只能取出所有中文,不能取出標(biāo)點(diǎn)符號(hào),所以到最后replace替換的時(shí)候,通過(guò)這個(gè)方法拿到的字符串,并不能跟原來(lái)的字符串匹配到,所以替換不成;

所以,有沒(méi)有成熟的方法直接從這個(gè)字符串里拿到英文部分呢?


這里的需求是;中文里的數(shù)字,英文,標(biāo)點(diǎn)符號(hào)包括空格都要;

英文里的數(shù)字,標(biāo)點(diǎn)符號(hào)也要;

兩個(gè)最好都是原樣輸出;

回答
編輯回答
薄荷綠

個(gè)人覺(jué)得,這種整段的文字應(yīng)該有更好的格式的特征.而正則表達(dá)式應(yīng)該用在字符特征明確且規(guī)則復(fù)雜的短文字上.
根據(jù)問(wèn)題給出的例子,我覺(jué)得應(yīng)該逐行讀取文本,
第一步,查看行中是否存在中文標(biāo)點(diǎn)符號(hào),如果有,即可判斷為中文行,進(jìn)入下一行的判斷
第二步,如果沒(méi)有中文標(biāo)點(diǎn),逐字判斷是否為漢字,若發(fā)現(xiàn)漢字則認(rèn)為是中文行,否則為英文行.
第二步其實(shí)沒(méi)有必要做完整的遍歷,隨機(jī)抽取其中部分字符做判斷段就好了.

2017年8月7日 02:55
編輯回答
未命名

何不直接匹配英文?

(\w+?)
2017年7月16日 17:12
編輯回答
純妹

如果字符串格式一致,分割/\n\n/,或者分割/\n/再拼接

2017年10月14日 03:07
編輯回答
陌南塵

根據(jù)你給的文字結(jié)構(gòu),上面中文下面英文,分隔還是很清楚的,實(shí)現(xiàn)起來(lái)不難。

preg_match_all("/(?<=\n)\w+[\s\S]+/", $input_lines, $output_array); //返回?cái)?shù)組第0個(gè)元素輸出英文
preg_match_all("/[\W\w]+?(?=\n\w+)/", $input_lines, $output_array);;  //返回?cái)?shù)組第0個(gè)元素輸出中文
2017年7月5日 11:17
編輯回答
真難過(guò)
"/([\w*&\s\.’\-,%\(\)\^\$])+/ims"
2018年2月22日 18:18
編輯回答
祈歡
function deleteCn($charset = 'utf8') {
    if ($charset=='gb2312') {
        $reg = "/^[".chr(0xa1)."-".chr(0xff)."]+/";
    } else if ($charset=='utf8'){
        $reg = "/[\x{4e00}-\x{9fa5}]+/u";
    } else return false;
    return preg_replace($reg, "", getWordFileDetail());
}
2017年6月16日 12:32
編輯回答
使勁操
`/[^a-z0-9,.,。、*\s]/gi`

把不要的東西都刪了唄。`php`怎么刪。。。我好想不會(huì)

clipboard.png

2017年12月17日 11:26