最後の出現時に特殊記号の後に正規表現を使用して文字列を削除したいと思います。つまり私は、文字列Regexは最後の出現時に特殊文字の後に文字列を削除します
Hello, How are you ? this, is testing
を持っています、私はこれらのようなこの
Hello, How are you ? this
のような出力を必要とする通常の文字列操作は完全に罰金ているとき、なぜ正規表現を気に私の特別なシンボル, : : |
最後の出現時に特殊記号の後に正規表現を使用して文字列を削除したいと思います。つまり私は、文字列Regexは最後の出現時に特殊文字の後に文字列を削除します
Hello, How are you ? this, is testing
を持っています、私はこれらのようなこの
Hello, How are you ? this
のような出力を必要とする通常の文字列操作は完全に罰金ているとき、なぜ正規表現を気に私の特別なシンボル, : : |
でしょうか?
EDIT;文字列に:
と,
の両方が正しく動作しないことに気付きました。
このコードはすべての文字をループし、最後の文字と部分文字列を表示します。 "chars"が全くない場合は、$ posを文字列の全長($ strを出力します)に設定します。
$str = "Hello, How are you ? this: is testing";
$chars = [",", "|", ":"];
$pos =0;
foreach($chars as $char){
if(strrpos($str, $char)>$pos) $pos = strrpos($str, $char);
}
if($pos == 0) $pos=strlen($str);
echo substr($str, 0, $pos);
使用正規表現は、配列に(特殊文字によって)文字列を分割し、配列内の最後の要素を削除するには:
<?php
$string = "Hello, How are you ? this, is testing";
$parts = preg_split("#(\,|\:|\|)#",$string,-1,PREG_SPLIT_DELIM_CAPTURE);
$numberOfParts = count($parts);
if($numberOfParts>1) {
unset($parts[count($parts)-1]); // remove last part of array
$parts[count($parts)-1] = substr($parts[count($parts)-1], 0, -1); // trim out the special character
}
echo implode("",$parts);
?>
シェアあなたのコードあなたが正規表現コード –
シェアをしようとしたものを試しました –
regexpは特殊記号の1つと一致し、その後にそのセットに含まれない文字数が続き、その後に文字列の終わりが続きます。 – Barmar