这是我的字符串的例子。
$x = "John Chio - Guy";
$y = "Kelly Chua - Woman";
我需要reg替换的模式。
$pattern = ??
$x = preg_replace($pattern, '', $x);
由于
答案 0 :(得分:64)
不需要正则表达式。您可以使用explode
:
$str = array_shift(explode('-', $str));
$str = substr($str, 0, strpos($str, '-'));
可能与trim
结合使用以删除前导空格和尾随空格。
更新:@Mark指出,如果您要获取的部分包含-
,则此操作将失败。这一切都取决于你可能的输入。
因此,假设您要删除最后短划线后的所有内容,可以使用strrpos
查找子字符串的最后一次出现:
$str = substr($str, 0, strrpos($str, '-'));
所以你看,没有正则表达式;)
答案 1 :(得分:9)
要删除第一个连字符后的所有内容,您可以在代码中使用此正则表达式:
"/-.*$/"
要删除最后连字符后的所有内容,您可以使用此正则表达式:
"/-[^-]*$/"
您还可以将其与结果末尾的修剪空白结合起来:
"/\s*-[^-]*$/"
答案 2 :(得分:6)
您可以使用strtok
:
$x = strtok($x, '-');
答案 3 :(得分:4)
您也可以使用。
strstr( "John Chio - Guy", "-", true ) . '-';
第三个参数true
告诉函数在第一次出现第二个参数之前返回所有内容。
答案 4 :(得分:0)
我希望这些模式可以帮助你=]
$pattern1='/.+(?=\s-)/' //This will match the string before the " -";
$pattern2='/(?<=\s-\s).+/' //This will match the string after the "- ";
答案 5 :(得分:0)
爆炸或正则表达是一种矫枉过正,试试这个:
$str = substr($str, 0, strpos($str,'-'));
或其中一个答案中的strtok版本。
答案 6 :(得分:-1)
使用strstr
功能。
示例:
$my_string = "This is my best string - You like it?";
$my_new_string = strstr($my_string, '-', true);
echo($my_new_string);