REGEX - Preg_replace搜索动态内容

时间:2011-10-15 09:47:08

标签: php regex preg-replace

我正在建立一个系统,从教育中取出所有可选科目并将其放入数据库中。这很好。
现在我想确定如果您选择“财务A”,您不能选择“财务C”,我正在尝试使用preg_replace执行此操作,因为主题是数组。但它一直给我一个错误:

Delimiter must not be alphanumeric or backslash

现在这里有一些代码:

if
(
    preg_replace("/" + $name_without_level + " (A|B|C)/", "", $andre_fag) 
        == $andre_fag
    || preg_replace("/" + $name_without_level + " (A|B|C)/", "", $andre_fag2)
        == $andre_fag2
){

变量$name_without_level给出没有A,B或C的主题名称,等级。

如何修复错误?我已经尝试了我能想到的一切。

1 个答案:

答案 0 :(得分:2)

想象一下,$name_without_level只是"Finance / Markets"。想象一下你的正则表达式会发生什么。

使用preg_quoteDocs确保您按字面意思查找正确的字符串,并且不会破坏正则表达式:

$pattern = sprintf('/%s (A|B|C)/', preg_quote($name_without_level));
if
(
    preg_replace($pattern, "", $andre_fag) == $andre_fag
    || preg_replace($pattern, "", $andre_fag2) == $andre_fag2
){

这并不意味着这是您唯一的代码问题。您需要进行错误检查才能真正找到错误。