保存在正则表达式PHP中找到的零件



我正在使用:

<?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,则最终应以:

等URL
<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>

最新更新