我正在使用這個regex來移除字串中的數字,它在這方面作業得很好
$story = preg_replace('/ ? [0-9][0-9()-s ]{4,20}[0-9]/', ', $story)。)
我的問題是,如果數字是url的一部分,我不想洗掉它們,例如:
。domain.com/page/?id=article_1625463
是否可以將其從字串的其他部分洗掉。
那么這樣:
致電我們公司3453453454 or 0045 345 532 34 or visit our website domain. com/page/?id=article_1625463
變成了:
致電本公司或 或訪問我們的網站domain.com/page/?id=article_1625463
uj5u.com熱心網友回復:
對于這樣一個例子,如果數字如此明顯的話,也許regex是一個過度的做法。
既然你也標記了php,你可以使用一個更簡單的方法,如:
<?php
$string = "請撥打我們公司的電話3453453454或0045 345 532 34或訪問我們的網站domain.com/page/?id=article_1625463"。
$myArray = explode(" ",$string) 。
foreach($myArray as $key => $value){
if (! is_numeric($value)){
$constructedSentence[] = $value。
}
}
echo implode(' '/span>, $constructedSentence);
基本上,你用空格分隔器將你的句子分成幾個部分,并簡單地檢查陣列是否只是一個數字。如果是的話,你就把它排除掉,然后繼續,最后把你的句子格式化成你想要的樣子。
你可以擴展這個邏輯,以檢查字串是否包含.com部分或可以表示為url的東西,所以你包括它,否則你只是剝離數字。
但是對于你的例子來說,這段php代碼可以很好地完成作業,而不需要任何重碼。
uj5u.com熱心網友回復:
這個的重碼看起來像
一個重碼是這樣的
<URL_REGEX> (*SKIP)(*F)|<YOUR_REGEX>
如果我們同意每個URL以http開始,并上升到下一個空格或字串的末端,你可以使用
preg_replace('/httpS*(*SKIP)(*F)|s* ? [0-9][0-9()-s ]{4,20}[0-9]/i', ''/span>, $story)
請看regex演示。
。在這里,httpS*(*SKIP)(*F)|匹配http,然后匹配任何0個或更多的非空格字符,然后匹配失敗,重碼引擎開始從失敗位置尋找下一個匹配。因此, ? [0-9][0-9()-s ]{4,20}[0-9]部分將永遠不會在URLs中匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/306682.html
標籤:
