我在字符串中有很多(頁#)像(第13頁)(第234頁),我想刪除它們。我用以下模式匹配,但它不起作用匹配以下模式
preg_replace('/\(p\.*\)/','',$string);
(to escape (
p is p
\. to escape .
我需要一些幫助在這裏。謝謝。
我在字符串中有很多(頁#)像(第13頁)(第234頁),我想刪除它們。我用以下模式匹配,但它不起作用匹配以下模式
preg_replace('/\(p\.*\)/','',$string);
(to escape (
p is p
\. to escape .
我需要一些幫助在這裏。謝謝。
您的正則表達式中沒有任何符合頁碼的內容。你只是匹配像(p.......)
。
preg_replace('/\(p\.\s*\d+\s*\)/', '', $string);
*表示匹配0個或多個前面的項目,所以它會在工作。在你的例子中的字符。也許你會需要這樣的東西:
preg_replace('/\(p\. ?[0-9]+\)/','',$string);
此相匹配:?
希望這有助於
首先,在所有preg_replace
是一個函數,而不是一個程序,如果你想看到的任何變化,你需要寫:
$str = preg_replace($pattern, $replacement, $str);
在你的模式,你寫\.*
這意味着文字。零次或多次,我認爲這不是你想要的。我假設你想寫一個文字\..*
。和零個或多個字符。但這不起作用,原因有兩個:它不檢查字符是否是數字,並且因爲量詞是貪婪的,所以.*
將匹配所有字符,直到行尾並且將回溯到最後一個括號。
的好辦法可能是,檢查至少有一個數字(使用+
量詞)或相同的多個constraignant(不含空格可變數量)Barmar模式:
/\(p\. \d+\)/
謝謝你這麼多小提琴!我發現HTML中的空格是 ,所以我將模式更改爲\(p \。 + \ d + \)。一切都設定好了。 –