【发布时间】:2013-04-22 13:43:10
【问题描述】:
我正在尝试在给定前缀列表的字符串中执行多重搜索和替换。
例如:
$string = "CHG000000135733, CHG000000135822, CHG000000135823";
if (preg_match('/((CHG|INC|HD|TSK)0+)(\d+)/', $string, $id)) {
# $id[0] - CHG.*
# $id[1] - CHG(0+)
# $id[2] - CHG
# $id[3] - \d+ # excludes zeros
$newline = preg_replace("/($id[3])/","<a href=\"http://www.url.com/newline.php?id=".$id[0]."\">\\1</a>", $string);
}
这只会改变 CHG000000135733。如何使代码能够将其他两个 CHG 号码替换为对应号码的链接。
使用 Casimir et Hippolyte 提交的这段代码解决了问题。
$newline = preg_replace ('~(?:CHG|INC|HD|TSK)0++(\d++)~', '<a href="http://www.url.com/newline.php?id=$0">$0</a>', $string);
【问题讨论】:
-
$input中有什么内容?你永远不会定义它。