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

+0

私の悪い、私はちょうどあなたのコメントを見て、あまりにもキーワードを削除するstrlen部分を削除します。私はちょうどそれを更新しましたが、結果を調整するためにsubstrをもっと使いたいと思うでしょう。 –

+0

申し訳ありませんが、削除には 'keyword'も含めてください。 – laukok

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

regex(絶対に推奨されていない)でやりたければ、preg_quote(ちょうどの場合)を追加することをお勧めします。 –

+0

Aramに感謝します。申し訳ありませんが、実際に 'キーワード 'も削除したいと思っています... – laukok

+0

置換文字列に意図しない後方参照が含まれていたところで問題が発生しました。 http://ak.net84.net/php/the-horrors-of-using-preg_replace/ –

関連する問題