0

我想删除字符串开头和结尾的所有标点符号,连字符、下划线除外。

示例:if input is spice-b32.Or lg_b32;Then string after using preg_replace(); 应该是:spice-b32lg_b32;

我也尝试preg_match('/^[A-Za-z0-9]/',$inm)用于数据验证 $inm=preg_replace('/^\PL+|\PL\z/','',$inm);,但是当输入a!-read_结果为a!-read

但输出应该是:a-read

如果这个 preg_replace() 或 preg_match() 不正确,请帮助..

4

2 回答 2

1

如果我正确理解你想要什么,那么这样的事情会为你做:

$inm=preg_replace('/[,.!?]*([-_]+)[,.!?]*/',
                  '\1',
                  preg_replace('/\b[.,?!]+|[.,!?]+\b/', '', $inm);

随意将其他需要剥离的角色添加到角色组中。

于 2013-09-05T09:04:18.080 回答
0

怎么样

$arr = array('spice-b32.', 'lg_b32;', 'a!-read_');
foreach ($arr as $str) {
    echo preg_replace('/^[^\P{P}_-]+|[^\P{P}_-]+$/u', '', $str),"\n";
}

这将从字符串的开头或结尾删除所有标点符号(_和除外)。-

输出:

spice-b32
lg_b32
a!-read_
于 2013-09-05T10:02:19.190 回答