需要preg_replace模式。用单个字符替换双字符

时间:2011-08-30 13:22:34

标签: php regex

我不熟悉模式,这就是为什么我在这里问它而不是经历一个跟踪和错误过程。我知道这不是最好的学习方式,但我有更重要的事情需要编码。

基本上我想用一个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))

然后处理双字符......

2 个答案:

答案 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很好,所以我建议也要这样做。