2012-02-14 82 views
0

如何在匹配关键字后使用preg_replace删除所有内容?如何删除关键字匹配后的所有内容?

举例来说,如果关键字local下面的字符串匹配,

home/hello/local/flower/stone/... 

然后返回这个唯一的,

home/hello 

或者我可以使用任何PHP默认阵列功能?

回答

1

根据你想要做什么,一个简单的strpos + strlen可以做到这一点。

<?php 

$string = "hello/local/flower/stone/..."; 
$keyword = "local"; 

echo substr($string, 0, strpos($string, $keyword)); 

?> 

http://ideone.com/3OOq8

要小心,我认为你总是在字符串的关键字,这可能并非如此。


资源:

+0

感谢您的回答,科林! :-) – laukok 2012-02-14 17:12:34

+0

我不好,我刚才在下面看到你的评论,删除strlen部分也删除关键字。我只是更新了它,但是你可能想用substr来更多地调整结果。 – 2012-02-14 17:14:00

+0

对不起,我需要删除包括'关键字'以及... – laukok 2012-02-14 17:19:31

0
<?php 
$str = 'hello/local/flower/stone/...'; 
$find = 'local'; 
$replaced = preg_replace("#(.*?{$find}).*#", '$1', $str); 
var_dump($replaced); 
?> 
+0

如果你想用正则表达式(绝对不推荐),我建议你添加preg_quote(以防万一) – 2012-02-14 17:08:54

+0

谢谢阿拉姆。对不起,我真的想删除'关键字'... – laukok 2012-02-14 17:11:00

+0

我遇到了问题一旦替换字符串包含意想不到的反向引用。 http://ak.net84.net/php/the-horrors-of-using-preg_replace/ – 2012-02-14 17:14:36