我不熟悉模式,这就是为什么我在这里问它而不是经历一个跟踪和错误过程。我知道这不是最好的学习方式,但我有更重要的事情需要编码。
基本上我想用一个char替换给定char的任何双重匹配。这用于在验证之前清理输入字符串。例如
$string='hello///stack/overflow/ // //!';
$string2='hello((stack(overflow(((( (!';
$clean= preg_replace($pattern, '/',$string );
$clean2= preg_replace($pattern, '(',$string2 );
echo $clean;
echo $clean2;
上面的代码应该回显 hello / stack / overflow /!和 hello(堆栈(溢出(!,当然是正确的模式...... :-)
任何帮助表示赞赏!
和平
编辑:实际上,我会更乐意使用一种模式来完成工作而不需要处理空白。我可以像这样剥离它们
preg_replace('/\s+/xms', '', trim($value))
然后处理双字符......
答案 0 :(得分:0)
您确定要仅替换双重出现吗?从您的示例看,您似乎想要替换2个或更多相同的字符。
如果您只需要使用某些特定字符
$value = preg_replace('/\\{2,}/', '\', trim(preg_replace('/\s+/', '', $value));
答案 1 :(得分:0)
首先,你的正则表达式模式开始是不正确的,使用/旨在识别模式的开始和结束。例如,$pattern='/-/';
将查找 - 替换
正则表达式的完整示例如下:
$string='this/is/my/pattern';
$pattern='///';
$replacement=' ';
preg_replace($pattern, $replacement, $string);
要回答你的问题,没有人能像this article那样解释它,所以请检查一下。
preg_replace上的PHP documentation很好,所以我建议也要这样做。