我正在用PHP练习RegEx。我知道将它用于HTML字符串操作并不是那么好,但有时我在使用的PHP环境中没有DOMDocument。
$a ='bsrc="lalala"';
$t = preg_replace('/(src="([^"]*)")/i', '\2', $a);
所以我试图从字符串中获取lalala
但由于某些原因它不起作用。我得到blalalaa
作为回报;
我尝试转义"
并写'/(src=\"([^\"]*)\")/i'
但无济于事。我在preg_replace_callback
函数中执行此操作,这可能是原因吗?
感谢任何帮助!
答案 0 :(得分:1)
您应该将正则表达式更改为
src=\"([^\"]*)\"
最终的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";
}