在'时删除所有字符-';发现php

在'时删除所有字符-';发现php,php,Php,有像 $s1 = "Elegan-71"; $s2 = "DganSD-171"; $s2 = "SD-1"; 删除从“-”到结尾的所有字符的最佳方法是什么 $cleans1 = "Elegan"; $cleans2 = "DganSD"; $cleans2 = "SD"; 有substr($s1,“-”,4) 但如何判断它应该删除所有数字,以及如何知道数字的大小,因为它们是可变的 $s1 = "Elegan-71"; if (strrpos($s1, '-')){ $cleans1

有像

$s1 = "Elegan-71";
$s2 = "DganSD-171";
$s2 = "SD-1";
删除从“-”到结尾的所有字符的最佳方法是什么

$cleans1 = "Elegan";
$cleans2 = "DganSD";
$cleans2 = "SD";
substr($s1,“-”,4)

但如何判断它应该删除所有数字,以及如何知道数字的大小,因为它们是可变的

$s1 = "Elegan-71";
if (strrpos($s1, '-')){
    $cleans1 = substr($s1, 0, strrpos($s1, '-'));
}else{
    $cleans1 = $s1;
}
这应该能奏效


这样就可以了。

这将满足您的要求:

<?php
    $my_string = "happy-123";
    $hyphen_position = strrpos($my_string, '-');
    $fixed_string = substr($my_string, 0, $hyphen_position);
    echo $fixed_string;
?>

这将满足您的要求:

<?php
    $my_string = "happy-123";
    $hyphen_position = strrpos($my_string, '-');
    $fixed_string = substr($my_string, 0, $hyphen_position);
    echo $fixed_string;
?>

假设您正在逐个清理每个字符串,并且您不希望以数组或列表结束,并且每个字符串都以该模式结束(破折号和数字),这应该可以做到:

$cleans1 = preg_replace('/-\d+$/', '', $s1);

假设您要单独清理每个字符串,并且不希望以数组或列表结束,并且每个字符串都以该模式结束(破折号和数字),这应该可以做到:

$cleans1 = preg_replace('/-\d+$/', '', $s1);
我也能做到

$s1 = "Elegan-71";
$clean = strstr($s1, '-', true);
echo $clean;
我也能做到

$s1 = "Elegan-71";
$clean = strstr($s1, '-', true);
echo $clean;
我喜欢:

$cleans1 = strtok($s1, "-");
关于

我喜欢:

$cleans1 = strtok($s1, "-");

关于

我相信您希望preg_匹配并使用正则表达式。也许是?我相信你想要preg_匹配并使用正则表达式。也许和你一起?