我有一个列表很少的MySQL表。
第1列包含html代码:
<p style="xxx"><img src="path/to/file.png(or jpg)"></p>
我想将src
(path / file.xxx)提取到第2列,然后从第1列中删除整个P标记。
我尝试了一些像
这样的技巧preg_match('/\< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\']*)/i', $row->image, $matches);
但似乎没有任何效果。
任何简单易用的东西?
答案 0 :(得分:0)
[]
表示字符集,而不是字符序列。
$html = '<p style="xxx"><img src="path/to/file.png(or jpg)"></p>';
preg_match('/<img src="([^"]*)">/', $html, $m);
echo $m[0] . "\n";
echo $m[1] . "\n";
输出:
<img src="path/to/file.png(or jpg)">
path/to/file.png(or jpg)
答案 1 :(得分:0)
关于使用正则表达式处理html的所有免责声明,您可以使用简单的preg_replace
:
$replaced = preg_replace('~<p[^>]*><img src="([^"]+)"></p>~', '$1', $yourstring);
<强>解释强>
<p
匹配标记的开头[^>]*
匹配任何非>
><img src="
匹配文字字符([^"]+)
中的括号捕获任何非"
到第1组的字符(这是您想要的)"></p>
将字符与第1组匹配$1
,这是对第1组捕获的内容的反向引用