在php中按数字和字符拆分字符串

时间:2015-07-13 20:25:14

标签: php

我已经看到了一些关于这个问题的问题,但不幸的是找不到我的解决方案。

我有以下字符串

$s = "ab2|5ac114|25ad"

我想得到以下结果。数组有三个成员

{"ab","ac","ad"}

Link 1 Link 3

2 个答案:

答案 0 :(得分:1)

虽然您必须为自己搜索这样简单的代码而不是先询问,但您可以使用以下代码:

$s = "ab2|5ac114|25ad";
$s = explode('|', $s);
for($i=0; $i<count($s); $i++)
{
    $s[$i] = preg_replace('/[^a-z]/', '', $s[$i]);
}

此处preg_replace()使用正则表达式替换所有不属于a-z的字符,即。它只是删除它们。 ^用于表示不属于。如果您不想删除大写字符,则只需将A-Z添加到正则表达式模式,然后该模式将变为/[^a-zA-Z]/。如果您确定$s将始终只包含字母和数字,那么您也可以使用/[0-9]/(请注意,这不包含^,因此只考虑数字更换)。

答案 1 :(得分:0)

使用PHP的preg_match_all() method,您可以轻松地按[a-z]模式过滤掉小写字母字符。量词+表示一个无限之间的任何数字。但是,如果您一直在寻找2个小写字符,那么您可以使用更具体的量词替换它,例如{2},因此模式将为"/[a-z]{2}/"

<?php

$subject = 'ab2|5ac114|25ad';
preg_match_all("/[a-z]+/", $subject, $matches);
$result = $matches[0];

print_r($result);