我想用正則表達式在最後一次出現特殊符號後移除字符串。即我有串正則表達式在最後一次出現特殊字符後移除字符串
Hello, How are you ? this, is testing
然後我需要這樣的
Hello, How are you ? this
,因爲這些將是我的特殊符號, : : |
我想用正則表達式在最後一次出現特殊符號後移除字符串。即我有串正則表達式在最後一次出現特殊字符後移除字符串
Hello, How are you ? this, is testing
然後我需要這樣的
Hello, How are you ? this
,因爲這些將是我的特殊符號, : : |
爲什麼用正則表達式的麻煩,在正常的字符串操作是完全沒有輸出?
編輯;注意到字符串中的:
和,
的行爲不正確。
該代碼將循環所有字符,並查看哪個是最後一個字符串。如果完全沒有「字符」,它會將$ pos設置爲字符串full length(輸出完整的$ 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);
?>
分享您的代碼你試過 –
份額正則表達式代碼您試過 –
正則表達式應匹配其中一個特殊符號,後跟任何數量的不在該集合中的字符,然後是字符串結尾。 – Barmar