删除除连字符和&之外的所有标点符号字符串的下划线

时间:2013-09-05 08:53:03

标签: php preg-replace preg-match

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

示例:如果输入为spice-b32.lg_b32;则使用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()不正确,那么请帮助..

2 个答案:

答案 0 :(得分:0)

如果我理解你想要什么,那么这样的事情会对你有用:

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

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

答案 1 :(得分: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_