我想删除除连字符,下划线之外的字符串开头和结尾的所有标点符号。
示例:如果输入为spice-b32.
或lg_b32;
则使用preg_replace()后输入;应该是:spice-b32
和lg_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()不正确,那么请帮助..
答案 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_