Регулярное выражение удаляет строку после специальных символов в последнем случае
Я хотел бы использовать регулярное выражение для удаления строки после некоторых специальных символов в последнем случае. т. е. я имею строку
Hello, How are you ? this, is testing
Тогда мне нужен такой вывод
Hello, How are you ? this
Поскольку это будут мои специальные символы , : : |
2 ответа:
Зачем беспокоиться о регулярном выражении, когда обычные строковые операции совершенно нормальны?
EDIT; заметил, что он не ведет себя корректно как с:
, так и с,
в строке.
Этот код зациклит все символы и увидит, какой из них последний, и подстроит его туда. Если нет никаких "символов" вообще, то он установит $pos в строки полной длины (output full $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); ?>