1

我有一个字母数字字符串,例如,

abc123bcd, bdfnd567, dfd89ds.

我想在字符串中第一次出现任何整数之前修剪所有字符。

我的结果应该是这样的,

abc, bdfnd, dfd.

我正在考虑使用substr. 但不确定如何在第一次出现整数之前检查字符串。

4

6 回答 6

8

preg_replace 您可以使用[docs]和正则表达式轻松删除不需要的字符:

$str = preg_replace('#\d.*$#', '', $str);

\d匹配一个数字并.*$匹配任何字符,直到字符串的结尾。

了解更多关于正则表达式的信息:http ://www.regular-expressions.info/ 。

演示

于 2013-01-02T08:34:28.403 回答
3

一个可能的非正则表达式解决方案是:

例子:

$string = 'foo1bar';
echo substr($string, 0, strcspn($string, '1234567890')); // gives foo
于 2013-01-02T08:37:19.963 回答
2
$string = 'abc123bcd';
preg_replace("/[0-9]/", "", $string);

或者

trim($string, '0123456789');
于 2013-01-02T08:34:52.500 回答
0

我相信你正在寻找这个?

$matches = array();
preg_match("/^[a-z]+/", "dfd89ds", $matches);
echo $matches[0]; // returns dfd
于 2013-01-02T08:37:27.067 回答
0

您可以为此使用正则表达式:

$string = 'abc123bcd';
preg_match('/^[a-zA-Z]*/i', $string, $matches);
var_dump($matches[0]);

将产生:

abc
于 2013-01-02T08:41:40.057 回答
0

要删除 +/- 符号,您可以简单地使用:

绝对($数字)

并得到绝对值。

例如

$abs = abs($signed_integer);
于 2013-12-01T07:41:07.743 回答