我正在使用:
<?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,而不是丢失
例如:[汽车:1]
<a href=".base_url("logs/veh/" . 1).">[car: 1]</a>
有人有一些想法?
替换字符串中的 $1
将替换为匹配Regexp中第一个捕获组的部分。
但是,如果您需要调用功能(例如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); ?>
由于您使用的是捕获组(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>