我有一个字符串,其中包含纯文本“[var-X]”的各种实例,其中X可以是任何正整数。我没有事先知道X可以在任何给定的脚本中有多高(但是如果需要,我可以得到它)。PHP - 用其他不同的字符串替换多个相似的字符串
这些[var-X]中的每一个都必须被评估并由不同的字符串替换。不同的字符串的值取决于一个外部的XML文件,我没有问题解析。
所以,我的问题是,如何从
$str = "Hey I am some text,[var-1] a lot of these [var-3] parts will have to [var-9] go away and
be exchanged [var-2] by others";
去加(假设这个东西是一个更大的XML中)
(some xml...)
<Variation id="1">really</Variation>
<Variation id="2">quickly</Variation>
<Variation id="3">strange</Variation>
(some other xml...)
<Variation id="9">definitely</Variation>
(more xml...)
到
$str = "Hey, I am some text, really a lot of these strange parts will have to definitely go away
and be exchanged quickly by others";
是的最好的方法是首先遍历我的xml,找出整数有多高,然后用字符串上的strpos再次迭代?
我该如何处理可能发现[var-7]和[var-72](事先不知道数字长度)的事实?这可以用一个正则表达式来完成(假设一旦我把“[var-7]”和“7”作为一个整数,我仍然需要处理一些东西以知道替代它的位置)?
我希望问题清楚。我的不确定性主要是关于最好的方法,因为我可能能够一起攻击一些东西,但它可能是缓慢和丑陋的。
@AndyJones我目前(在测试现在)的方法包括:strpos “[VAR-”,然后strpos下一个“]”并从与substr的位置差异中获取int值。评估它,根据需要进行替换。转到下一个“[var-”,直到该strpos返回FALSE。它只是觉得有点笨拙。 – user1989178
gotcha - 建议使用preg_match和preg_replace - 我将添加一个答案然后 –
您如何阅读XML? – federicot