1

我有以下字符串

someText 50-90% someText

我只想在字符串是否采用这样的格式%之后添加50

someText 50%-90% someText

我尝试了以下...

preg_replace('/(\d+)\-[\d]+%/','$0%',  'text 30-50% text')
//the output: text 30-50%% text
preg_match_all('/(\d+)\-[\d]+%/',  'text 30-50% text',$x)
/*$x = array(2) {
*  [0]=>
*  array(1) {
*    [0]=>
*    string(6) "30-50%"
*  }
*  [1]=>
*  array(1) {
*    [0]=>
*    string(2) "30"
*  }
*}
*/
preg_replace('/(\d+)\-[\d]+%/','$1%',  'text 30-50% text');
//the output: text 30% text
4

4 回答 4

3
<?php
function normalizeRange($range) {
    return preg_replace('~(\d+)(-\d+%)~','$1%$2', $range);
}

var_dump(normalizeRange("5-6%")); // 5%-6%
var_dump(normalizeRange("5%-6%")); // 5%-6%
于 2012-09-25T05:58:22.523 回答
3

采用:

$str = "someText 50-90% someText";

$ret = preg_replace('/\d+(?=-)/', '$0%', $str);

// if you want to more specifically
$ret = preg_replace('/\d+(?=-\d+%)/', '$0%', $str);
于 2012-09-25T05:58:33.963 回答
1

采用

$str    = 'text 30%-50% text';
echo preg_replace('/([\d]+)\-[\d]+%/','$1%',  $str);
于 2012-09-25T06:04:32.243 回答
1

试试这个:

<?php
$text = 'someText 50-90% someText';
// match all text like 50-90%, 6-10% etc
preg_match( '/(^[^\d]*)(\d*\-\d*\%)(.*)/', $text, $matches );
$matches[2] = str_replace( '-', '%-', $matches[2] );
array_shift( $matches );
$text = implode( '', $matches );
?>

希望这可以帮助。

于 2012-09-25T06:13:30.560 回答