我试图仅使用以下内容在文本中留下a-zA-Z0-9._:
$new_pgname=preg_replace('|(^[a-zA-Z0-9_\.])|s','',$new_pgname);
但猜猜是什么......对,它不起作用!任何帮助PLZ?
谢谢。
答案 0 :(得分:4)
试试这个:
$new_pgname=preg_replace('%[^a-z0-9._]%i', '', $new_pgname);
这将保留大写和小写字符
答案 1 :(得分:3)
您应该做什么 - 替换一个或多个非a-z A-Z 0-9 _ or .
的字符。因此,您需要使用以下表达式:[^a-zA-Z0-9_\.]+
这意味着什么:
[]
- 定义一个字符类
^
- 不是这些字符
+
- 一个或多个
代码:
$new_pgname = "(*_&HF&)*FH)FE*H)_#(*#F(*&HEF&HF*&By7bv07f87asFB087aFgbh08aj9smf,f.,efw3.g3454-w54w.34.tw\43t4/.g34/g34g/3g434h8j)*7bh*&)Fg803723r6y";
echo $new_pgname . '<br />';
$new_pgname = preg_replace ('/[^a-zA-Z0-9_\.]+/', '', $new_pgname);
echo $new_pgname . '<br />';
输出:
(*_&HF&)*FH)FE*H)_#(*#F(*&HEF&HF*&By7bv07f87asFB087aFgbh08aj9smf,f.,efw3.g3454-w54w.34.tw#t4/.g34/g34g/3g434h8j)*7bh*&)Fg803723r6y<br />
_HFFHFEH_FHEFHFBy7bv07f87asFB087aFgbh08aj9smff.efw3.g3454w54w.34.twt4.g34g34g3g434h8j7bhFg803723r6y<br />
答案 2 :(得分:1)
你不需要在交替中删除点(。)
答案 3 :(得分:0)
你需要把carat / in / side放在支架上
答案 4 :(得分:0)
你所拥有的只会尝试匹配字符串开头的字符...插入符号(^
)进入字符组内部以使其无效。
$new_pgname=preg_replace('|([^a-zA-Z0-9_\.])|s','',$new_pgname);
答案 5 :(得分:0)
看起来你正在尝试使用否定的字符范围。为此,您需要将插入符号(^)放在方括号内,作为集合的第一个字符,即:
[^ A-ZA-Z0-9 _]