Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将子字符串与占位符匹配_Php_Substring_Match - Fatal编程技术网

Php 将子字符串与占位符匹配

Php 将子字符串与占位符匹配,php,substring,match,Php,Substring,Match,定义: 我在工作中遇到了这个场景。这可能是一个更好地理解我想要什么的参考 问题: 假设我有一个main字符串: “这是一个带有{2}占位符的{1}字符串” 和一个次要的一个: “这是一个非常类似的字符串,带有占位符的数据” 问题: 如何为每个占位符获取一个变量,分别称为“”的$v1、$v2、$vn,它们的值非常相似“”和”数据?正如您所看到的,我需要为每个占位符分配主占位符以外的子字符串 注释: 我正在使用PHP。您应该能够使用正则表达式执行以下操作: $pattern="/This is a

定义
我在工作中遇到了这个场景。这可能是一个更好地理解我想要什么的参考

问题
假设我有一个main字符串:

“这是一个带有{2}占位符的{1}字符串”

和一个次要的一个:

“这是一个非常类似的字符串,带有占位符的数据”

问题
如何为每个占位符获取一个变量,分别称为“
”的
$v1
$v2
$vn
,它们的值非常相似“
”和”数据?正如您所看到的,我需要为每个占位符分配主占位符以外的子字符串

注释

我正在使用PHP。

您应该能够使用正则表达式执行以下操作:

$pattern="/This is a (.*) string with (.*) placeholders/";
$subject="This is a very similar string with data for the placeholders";

preg_match($pattern,$subject,$matches);

$v1=$matches[1];
$v2=$matches[2];
有关php中正则表达式的更多信息,请参阅。

是否使用


感谢您的回答,但最初我不知道
$v1
$v2
的值是什么。。。这些是我试图赋予值的变量:)因此,如果使用正则表达式是唯一的方法,我应该动态创建模式,因为“主字符串”是动态的。你认为还有另一种选择,不使用正则表达式吗?@MarkTower你可以计算字符串部分的长度,直到
{0}
并使用子字符串,但我认为正则表达式会更容易。regex的哪一部分不适合你?您应该能够动态地构建正则表达式字符串。我不想使用正则表达式,因为我认为它很慢,但它似乎是这里最好的解决方案。@MarkTower我理解您对速度的担忧。虽然在处理大量文本时,正则表达式可能需要很长时间(尝试在数千行上运行正则表达式-这需要几分钟),但对于这么小的内容,我认为速度不应该有问题。我很高兴这对您有用。使用
$strRegEx='.'.''.'preg.'u replace('.'.\{\d+\}.''.'.'.''.'$mainStr.'.'以获取模式。
$string = 'This is a %s string with %s placeholders';
$v1 = 'very similar';
$v2 = 'data for the';

$result = sprintf($string, $v1, $v2);