如何在匹配關鍵字後使用preg_replace
刪除所有內容?如何刪除關鍵字匹配後的所有內容?
舉例來說,如果關鍵字local
下面的字符串匹配,
home/hello/local/flower/stone/...
然後返回這個唯一的,
home/hello
或者我可以使用任何PHP默認陣列功能?
如何在匹配關鍵字後使用preg_replace
刪除所有內容?如何刪除關鍵字匹配後的所有內容?
舉例來說,如果關鍵字local
下面的字符串匹配,
home/hello/local/flower/stone/...
然後返回這個唯一的,
home/hello
或者我可以使用任何PHP默認陣列功能?
根據你想要做什麼,一個簡單的strpos + strlen
可以做到這一點。
<?php
$string = "hello/local/flower/stone/...";
$keyword = "local";
echo substr($string, 0, strpos($string, $keyword));
?>
要小心,我認爲你總是在字符串的關鍵字,這可能並非如此。
資源:
<?php
$str = 'hello/local/flower/stone/...';
$find = 'local';
$replaced = preg_replace("#(.*?{$find}).*#", '$1', $str);
var_dump($replaced);
?>
如果你想用正則表達式(絕對不推薦),我建議你添加preg_quote(以防萬一) – 2012-02-14 17:08:54
謝謝阿拉姆。對不起,我真的想刪除'關鍵字'... – laukok 2012-02-14 17:11:00
我遇到了問題一旦替換字符串包含意想不到的反向引用。 http://ak.net84.net/php/the-horrors-of-using-preg_replace/ – 2012-02-14 17:14:36
感謝您的回答,科林! :-) – laukok 2012-02-14 17:12:34
我不好,我剛纔在下面看到你的評論,刪除strlen部分也刪除關鍵字。我只是更新了它,但是你可能想用substr來更多地調整結果。 – 2012-02-14 17:14:00
對不起,我需要刪除包括'關鍵字'以及... – laukok 2012-02-14 17:19:31