如何删除“-”之后字符串中的任何内容?

2022-08-30 19:23:04

这是我的字符串的示例。

$x = "John Chio - Guy";
$y = "Kelly Chua - Woman";

我需要注册替换的模式。

$pattern = ??
$x = preg_replace($pattern, '', $x); 

谢谢


答案 1

不需要正则表达式。您可以使用分解

$str = array_shift(explode('-', $str));

substrstrpos

$str = substr($str, 0, strpos($str, '-'));

也许与修剪结合使用以删除前导和尾随空格。

更新:正如@Mark指出的那样,如果要获取的部分包含 .,这将失败。这完全取决于您可能输入的内容。-

因此,假设您要删除最后一个破折号之后的所有内容,则可以使用strrpos,它查找子字符串的最后一次出现:

$str = substr($str, 0, strrpos($str, '-'));

所以你看,不需要正则表达式;)


答案 2

若要删除第一个连字符之后的所有内容,可以在代码中使用以下正则表达式:

"/-.*$/"

要删除最后一个连字符之后的所有内容,您可以使用以下正则表达式:

"/-[^-]*$/"

http://ideone.com/gbLA9

您还可以将其与从结果末尾修剪空格相结合:

"/\s*-[^-]*$/"

推荐