如果 str_replace 跟在另一个字母后面,则不替换该字母
我有一个包含数学公式的字符串,例如 T + ST + s + t
...
我将使用以下方法将所有这些字母标识符替换为数字:
$ids = array(
'T' => $t1,
'ST', => $st,
's', => $s1,
't', => $t2,
'N', => 1,
);
foreach ($ids as $id => $value) {
if (strpos($formula, $id) !== false) {
$formula = str_replace($id, $value, $formula);
}
}
在某些情况下这是可以的。 但是,如果公式开头有 ST,我会得到一个类似 S345324
的字符串。
并不是最好的选择:)
我通过将 ST 移动到数组中的第一个位置来修复此问题,但我觉得这 还有其他“更好”的解决方案吗?
I have a string which contains a math formula, like T + ST + s + t
...
I'm replacing all those letter identifiers with numbers using:
$ids = array(
'T' => $t1,
'ST', => $st,
's', => $s1,
't', => $t2,
'N', => 1,
);
foreach ($ids as $id => $value) {
if (strpos($formula, $id) !== false) {
$formula = str_replace($id, $value, $formula);
}
}
Which is ok in certain situations.
But if the formula has ST at the beginning I get a string like S345324
..
I fixed this by moving ST in the first position in my array, but I feel it's not really the best option :)
Are there any other "nicer" solutions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否在寻找
strtr()
?请注意,由于
strtr()
始终尝试查找最长的可能匹配,因此它不会将出现的ST
替换为S$t1
(而是$st
),无论您的$replace_pairs
数组如何排序。示例(如键盘上所示):
打印:
Are you looking for
strtr()
?Note that since
strtr()
always tries to find the longest possible match, it won't replace occurrences ofST
withS$t1
(instead of$st
), regardless of how your$replace_pairs
array is ordered.Example (as seen on codepad):
Prints: