2010-04-08 97 views
1

我想從文本中刪除一部分直到給定的字符串,並從另一個字符串中刪除另一部分PHP。

/.+string/i和/anotherstring.+/i沒有工作。

+0

只是要清楚,你試圖匹配一個關鍵字前的所有文本,並且所有文本又一次?在每種情況下,你想刪除匹配的文本? – Mathew 2010-04-08 00:49:10

+0

是的,正好這 – user311497 2010-04-08 00:51:47

+0

請發佈您使用的代碼無效。 – 2010-04-08 00:52:15

回答

1

/^.*$string//$string.*$/

+0

我試過, $ codehtmlfir = preg_replace(「/^.+ html/i」,「」,$ cahtml,1); 什麼都不做 – user311497 2010-04-08 00:56:00

+0

對不起,我忘了* – user311497 2010-04-08 00:56:25

+0

$ codehtmlfir = preg_replace(「/^.* html/i」,「」,$ cahtml,1); 不起作用 – user311497 2010-04-08 00:59:04

0

你不必使用太多的正則表達式。

$str = "junk junk keyworD1 what i want1 keYWord2 junk junk keyWORD1 what i want2 KEYWORD2"; 
$s = preg_split("/keyword1|keyword2/i",$str); 
for($i=1;$i<count($s);$i+=2){ 
print $s[$i]."\n"; 
} 

從以上,$s[1]將是你keyword1後想要什麼。如果有多個關鍵字對,你想要的東西是在每個第二個位置。即$s[1],$s[3]等。

輸出

$ php test.php 
what i want1 
what i want2 
+0

好的,小寫字母和大寫字母怎麼樣?有時它可以是關鍵字或關鍵字 – user311497 2010-04-08 01:10:40

+0

,然後使用'preg_split'和'i'修飾符 – ghostdog74 2010-04-08 01:53:14

0

「regexish」比這更復雜一點,所以你必須要更精確的你想要

從什麼開始到第一出現的字符串,但從開始停止對新行

/^.*?string/ 

最後發生串,停止對新行

/^.*string/ 

從開始到字符串的最後出現,忽略換行符

/^.*string/s 

從開始到字符串的最後出現,忽略換行符和情況

/^.*string/si 

等等