2010-04-08 96 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 

等等