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);