如何在 PHP 中获取字母表之前的所有子字符串?



我试图找到一种方法来获取字母字符之前的所有数字字符。下面是一些字符串示例。

1234-89783
453 S2 342
3456j5 789

所以我需要使用正则表达式从上面的数据中获取值,结果应该是 1234-89783、453、3456。

删除字母字符后的值,如果字母之前有空格,请删除空格。 453 S2 342 到 453,末尾字符没有空格。

只需删除第一个字母字符及其之后的所有内容即可。

$output = preg_replace('/ *[A-Za-z].*/s', '', $input);

您可以使用preg_split:

$data = [
"1234-89783",
"453 S2 342",
"3456j5 789",
];
$output = [];
foreach ($data as $item):
$split = preg_split("/[A-Za-z]+/", $item);
$output[] = $split[0];
endforeach;
print_r($output);

这将通过正则表达式(在本例中为小写和大写字母(拆分输入字符串。

在上面的示例中,我们将第 0 项从preg_split推送到数组中。根据您要对输出执行的操作,您可能需要使用trim()清理空格。因此,要像您的问题一样输出逗号分隔字符串,您可以执行以下操作:

foreach ($data as $item):
$split = preg_split("/[A-Za-z]+/", $item);
$output[] = trim($split[0]);
endforeach;
echo implode(", ", $output);

这将输出:

1234-89783, 453, 3456

也试试这个

<?php 
$string="1234-89783 453 S2 342 3456j5 789";
$res = preg_replace("/[^-0-9s]/", "", $string);
echo $res;
?>

最新更新