我有以下字符串
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
答案 0 :(得分: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%
答案 1 :(得分: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);
答案 2 :(得分:1)
使用
$str = 'text 30%-50% text';
echo preg_replace('/([\d]+)\-[\d]+%/','$1%', $str);
答案 3 :(得分: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 );
?>
希望这有帮助。