我正在使用这个
<?php echo preg_replace("/\[car:\s*(\d+)\]/", "<a href=".base_url("logs/veh/" . MISSING_PART).">[car:".MISSING_PART."]</a>", $row->log); ?>
我正在使用它来找到:[car:car_id]并在其上放置一个href链接。但我需要找到的汽车ID而不是MISSING_PART
例如: [汽车:1]
<a href=".base_url("logs/veh/" . 1).">[car: 1]</a>
有人有主意吗?
答案 0 :(得分:0)
由于您正在使用捕获组(1
),因此将其用作替代组(\1
)
preg_replace("/\[car:\s*(\d+)\]/", '<a href="' . '.base_url(\'logs/veh/' . '\1' . '\')">[car:\1]</a>', $row->log);
如果098765
是捕获的car_id
,则最终应以以下网址结尾:
<a href=".base_url('logs/veh/098765')">[car:098765]</a>
如果base_url
是一个函数(如注释中所述),则可以执行以下操作:
preg_replace("/\[car:\s*(\d+)\]/", '<a href="' . base_url("logs/veh/$1") . '">[car:\1]</a>', $row->log);
应该导致的结果:
<a href="logs/veh/098765">[car:098765]</a>
答案 1 :(得分:0)
$1
将被与正则表达式中第一个捕获组匹配的部分替换。
但是,如果您需要调用一个函数(例如base_url()
)来获取替换字符串,则必须使用preg_replace_callback()
。该函数的参数是一个数组,其元素0
是整个匹配项,其他元素是捕获的组。
<?php echo preg_replace("/\[car:\s*(\d+)\]/",
function($matches) {
return "<a href=".base_url("logs/veh/" . $matches[1]).">[car:".$matches[1]."]</a>";
}, $row->log); ?>