在PHP中为函数创建正则表达式


Creating regex for function in PHP

我正试图创建一个正则表达式,在条目中的任何位置搜索SD-NNNN(其中N是一个数字),以便将其转换为超链接。

所以你知道我想做什么,这是一个简单的数据库条目,其中包含关于一天中所做事情的评论,评论可能包含一个票证引用,这就是我想要得到的,这样它就可以指向票证的URL。

我似乎根本无法理解regex,所以到目前为止我并不高兴,甚至不确定这是否是正确的做事方式。

这是我当前的代码:

$cRow = current($row);
if ($cRow == "INSERT REGEX/PREG_MATCH/WHATEVER) {
    $regex = "<a href='http://something.com/search/$regex'>$regex</a>";
}
echo "<td style='word-wrap: break-word'>$cRow</td>";
next($row);
$y++;

完全还没有完成,但基本思想是$c_row可以是任何东西,但如果它包含SD-NNNN,那么它只会用超链接替换SD-NNNNN,同时调用相同的东西。

有人能帮我吗?

注释没有很好地格式化代码,所以这里是更新:

这就是我尝试的:

$c_row = current($row);
$str = "<a href='https://example.com/browse/";
$regex = "/^SD-'d{5}/";
if (preg_match($regex, $c_row)
{
    $c_row = preg_replace($regex, $str$0, $c_row);
}
echo "<td style='word-wrap: break-word'>" . $c_row . '</td>';
next($row);
$y = $y + 1

这给了我一个500错误的{下的if.

这将匹配"SD-",然后匹配五个数字:

$str = "SD-12345";
$regex = "/SD-'d{5}/"; ( put a caret ^ before, to match it in the beginning)
if (preg_match($regex, $str) {
    // do sth
}
// will match: SD-12345, will not match: SD-123456

如果你想更换它,你可能需要使用以下代码:

$str = "SD-12345";
$regex = "/(SD-'d{5})/";
$replacement = "";
preg_replace($regex, $replacement, $str);
// will replace SD-12345 with ""

正如@stribizhev所指出的,也许您正在尝试匹配HTML元素,为此,无论如何,解析器(例如SimpleXML)都更适合。这个问题仍然有些含糊。