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

时间:2015-11-30 18:16:34

标签: php regex

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

所以你知道我想要做什么,这是一个简单的数据库条目,其中包含有关白天已经完成的事情的评论,评论可能包含一个票证参考,这是我想要获得的这样它就可以指向故障单的URL。

我似乎无法理解正则表达式,所以到目前为止我没有任何喜悦,甚至不确定这是否是正确的做事方式。

这是我目前的代码:

$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-NNNNN那么它只会用一个超链接替换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

这给了我{if if。

下的500错误

1 个答案:

答案 0 :(得分:0)

这将匹配&#34; SD - &#34;然后五个数字:

$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)无论如何都会更适合。问题仍然有些模糊。