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);
?>
regex(絶対に推奨されていない)でやりたければ、preg_quote(ちょうどの場合)を追加することをお勧めします。 –
Aramに感謝します。申し訳ありませんが、実際に 'キーワード 'も削除したいと思っています... – laukok
置換文字列に意図しない後方参照が含まれていたところで問題が発生しました。 http://ak.net84.net/php/the-horrors-of-using-preg_replace/ –
感謝! :-) – laukok
私の悪い、私はちょうどあなたのコメントを見て、あまりにもキーワードを削除するstrlen部分を削除します。私はちょうどそれを更新しましたが、結果を調整するためにsubstrをもっと使いたいと思うでしょう。 –
申し訳ありませんが、削除には 'keyword'も含めてください。 – laukok