preg_replace不适用于我的css字符串

时间:2014-08-14 11:47:57

标签: php regex preg-replace

我遇到preg_replace的问题,我试图替换css文件字符串,其中包含

   #id-name.class-name 

结构

   #id-name .class-name

(里面有太空人物)。

这是我的代码:

 function getFileContent($file)
{
    $path = $this->_directory."/".$file;

    if(file_exists($path))
        return file_get_contents($path);
}

    function replaceCSS($fileCSS){

    $css_contents = $this->getFileContent($fileCSS);
    //$pattern_one = '/\#([a-zA-Z0-9\-]*)\./g';
    $css_contents = preg_replace('/#([a-zA-Z0-9\-]*)\./g','#\\1 .',$css_contents);
    echo $css_contents;
}

结果是NULL,如果我做对了(它什么也没显示)。 常规模式是正确的(检查两次)。 我的语法出了什么问题?

3 个答案:

答案 0 :(得分:0)

尝试这种模式:

  

“@(#[^] +)(。[^ {] +)@ ig”

和这个替换

"$1 $2"

我正在使用regex101检查我的正则表达式

答案 1 :(得分:0)

在php中,最好使用$1作为组引用。另外,我会将正则表达式中的第一个*更改为+,以确保#之后有字符。

$css_contents = preg_replace('/#([a-zA-Z0-9\-]+)\./','#$1 .',$css_contents);

答案 2 :(得分:0)

/g修饰符在PHP中无效:

PHP Warning:  preg_replace(): Unknown modifier 'g' in ...

删除它并将起作用......

您的修改后的行将是:

    $css_contents = preg_replace('/#([a-zA-Z0-9\-]*)\./','#\\1 .',$css_contents);