我正在用PHP练习RegEx。为什么这个简单的regExp不起作用?

时间:2014-01-16 10:31:50

标签: php regex

我正在用PHP练习RegEx。我知道将它用于HTML字符串操作并不是那么好,但有时我在使用的PHP环境中没有DOMDocument。

$a ='bsrc="lalala"';

$t = preg_replace('/(src="([^"]*)")/i', '\2', $a);

所以我试图从字符串中获取lalala但由于某些原因它不起作用。我得到blalalaa作为回报;

我尝试转义"并写'/(src=\"([^\"]*)\")/i'但无济于事。我在preg_replace_callback函数中执行此操作,这可能是原因吗?

感谢任何帮助!

4 个答案:

答案 0 :(得分:1)

您应该将正则表达式更改为

src=\"([^\"]*)\"

Regular expression visualization

Debuggex Demo

最终的PHP必须是

$t = preg_replace('~src=\"([^\"]*)\"~i', '\2', $a);

答案 1 :(得分:1)

如果您想要匹配,则需要使用preg_match代替preg_replace

$a ='<src="lalala"a';
if (preg_match('/<src="([^"]*)"/i', $a, $m))
    print_r($m[1]);

答案 2 :(得分:1)

这是因为您正在搜索<src并且字符串没有此字符串。您的测试字符串应为<src="lalala"而不是bsrc..

答案 3 :(得分:0)

试试这个:

    $a ='bsrc="lalala"a';

    if (preg_match('/src="(.*)"/i', $a, $matches))
    {
            if (isset($matches[1]))
            {
                 echo "Found value: " .$matches[1]. "\n";
            }
            else 
            {
                echo "Not found\n";
            }
    }
    else
    {
        echo "Not found\n";
    }