【发布时间】:2021-06-25 14:49:23
【问题描述】:
$str = ' I love [123] and [124] at (456). I hate [234] and [235] at (123).'
我想做
$str = 'I love <a title="a">[123]</a> and <a title="b">[124]</a> at <a title="XX">(456)</a>. I hate <a title="c">[234]</a> and <a title="d">[235]</a> at <a title="ZZ">(123)</a>.'
要替换的文本是大括号 () 或 [] 中的,可从表 1 或表 2 中找到。
Table 1
123 | a
124 | b
234 | c
235 | d
Table 2
456 | XX
123 | ZZ
目前的方法
$text=explode(' ', $text);
for ($i=0; $i<count($text); $i++) {
for ($j=0; $j<count($table1Col1); $j++) {
if ($text[$i] == $table1Col1[$j])
$text[$i] = '<a href="#" title="'.$table1Col2[$j].'">'.$table1Col1[$j].'</a>';
}
for ($j=0; $j<count($table2Col1); $j++) {
if ($text[$i] == $table2Col1[$j])
$text[$i] = '<a href="#" title="'.$table2Col2[$j].'">'.$table2Col1[$j].'</a>';
}
}
如何改进代码以跳过不需要的循环?
【问题讨论】:
-
所以
[]只适用于table1,()适用于table2? -
@AbraCadaver 是的!
标签: php string replace str-replace