【发布时间】:2012-03-09 03:39:25
【问题描述】:
我已经有了一些工作代码,但如果可以的话,我需要有人帮助解释为什么它可以工作!
我正在使用 PHP 替换字符串中的任何内容,如果它不是 az、AZ、0-9、逗号、分号、下划线或连字符(最终应该代表单个用户名或逗号) /分号分隔的用户名列表)。
以下作品:
$data = preg_replace('/[^,;a-zA-Z0-9_-]/s', '', $data);
但以下不是:
$data = preg_replace('/[^a-zA-Z0-9_-,;]/s', '', $data);
为什么这仅在逗号和分号开头时才有效?把它们放在最后似乎会破坏事情(这是我最初遇到 /[^a-zA-Z0-9_-]/s 时尝试的方法。
顺便说一句,我还使用以下内容来修剪任何 尾随 分号(复数)或逗号(复数),有人可能会建议一种更有效和/或更优雅的方法这个?:
if(preg_match('/;$/', $data))
{
$data = rtrim($data, ';' );
}
if(preg_match('/,$/', $data))
{
$data = rtrim($data, ',' );
}
感谢您的帮助:)
【问题讨论】:
标签: php regex preg-replace