用数字更改 preg 匹配项
Change preg matchess with numbers
我正在尝试通过对匹配项进行排序来用数字替换匹配项,但无法做到。我有一个字符串,单词之间有 {}。我想在没有 foreach 的情况下将它们更改为 1、2、3 等。可以与 preg 匹配所有?
$string = 'sample {} test {} string {}';
这个字符串一定是这样看的:
样本 (0) 测试 (1) 字符串 (2)
这是我的代码:
$string_split = explode('{}', $string);
foreach($string as $string_word){
$i ++;
echo $string_word . $i . ' ';
}
您可以使用 preg_match
遍历您的字符串,同时保留一个计数器:
$string = 'sample {} test {} string {}';
$counter = 0;
while (preg_match("/\{\}/", $string)) {
$string = preg_replace("/\{\}/", "(" . $counter . ")", $string, 1);
$counter = $counter + 1;
}
echo "\n" . $string;
这会打印:
sample {} test {} string {}
sample (0) test (1) string (2)
我认为正则表达式会很有用。
$re = '/(.*?)\s{}(\s?)/m';
$str = 'sample {} test {} string {}';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
$new_string = null;
$i = 0;
foreach($matches as $item){
$new_string .= $item[1] . ' ('. $i . ') ';
$i++;
}
echo $new_string;
输出:
sample (0) test (1) string (2)
使用 preg_replace_callback 的另一个选项,每次替换都会增加计数。
$string = 'sample {} test {} string {}';
$count = 0;
echo preg_replace_callback("~{}~", function($m) use (&$count) {
return '(' . $count++ . ')';
}, $string);
输出
sample (0) test (1) string (2)
我正在尝试通过对匹配项进行排序来用数字替换匹配项,但无法做到。我有一个字符串,单词之间有 {}。我想在没有 foreach 的情况下将它们更改为 1、2、3 等。可以与 preg 匹配所有?
$string = 'sample {} test {} string {}';
这个字符串一定是这样看的: 样本 (0) 测试 (1) 字符串 (2)
这是我的代码:
$string_split = explode('{}', $string);
foreach($string as $string_word){
$i ++;
echo $string_word . $i . ' ';
}
您可以使用 preg_match
遍历您的字符串,同时保留一个计数器:
$string = 'sample {} test {} string {}';
$counter = 0;
while (preg_match("/\{\}/", $string)) {
$string = preg_replace("/\{\}/", "(" . $counter . ")", $string, 1);
$counter = $counter + 1;
}
echo "\n" . $string;
这会打印:
sample {} test {} string {}
sample (0) test (1) string (2)
我认为正则表达式会很有用。
$re = '/(.*?)\s{}(\s?)/m';
$str = 'sample {} test {} string {}';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
$new_string = null;
$i = 0;
foreach($matches as $item){
$new_string .= $item[1] . ' ('. $i . ') ';
$i++;
}
echo $new_string;
输出:
sample (0) test (1) string (2)
使用 preg_replace_callback 的另一个选项,每次替换都会增加计数。
$string = 'sample {} test {} string {}';
$count = 0;
echo preg_replace_callback("~{}~", function($m) use (&$count) {
return '(' . $count++ . ')';
}, $string);
输出
sample (0) test (1) string (2)