How do I, using preg_replace, replace more than one underscore with just one underscore?
preg_replace()
the + operator is needed
$text = "______";
$text = preg_replace('/[_]+/','_',$text);
You can also use T-Regx library which has automatic delimiters.
pattern('_+')->replace($your_string)->with('_');
Actually using /__+/
or /_{2,}/
would be better than /_+/
since a single underscore does not need to be replaced. This will improve the speed of the preg variant.
preg_replace('/[_]+/', '_', $your_string);
I'm don't the reasons you want to use preg_replace but what's wrong with:
str_replace('__', '_', $string);
This will Accept Only Characters,numeric value or Special Character found it will replace with _
<?php
error_reporting(0);
if($_REQUEST)
{
PRINT_R("<PRE>");
PRINT_R($_REQUEST);
$str=$_REQUEST[str];
$str=preg_replace('/[^A-Za-z\-]/', '_', $str);
echo strtolower(preg_replace('/_{2,}/','_',$str));
}
?>
<form action="" method="post">
<input type="text" name="str"/>
<input type="submit" value="submit"/>
</form>