2012-02-14 79 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