1

我有这样的动态字符串:

$string1 = '<a style="background-image: url(&quot;http://someurl.com/image.jpg&quot;);" class="thumb" title="title goes here" href="http://www.someurl.com/"></a>';

我的 preg_match_all 代码:

preg_match('/<a style="background-image: url((.*?));" class="thumb" title="(.*?)" href="(.*?)"><\/a>/', $string1, $matches);

echo $matches['1'];
echo $matches['2'];
echo $matches['3'];

url() 括号不起作用,知道如何逃脱吗?

4

1 回答 1

1

你需要逃避(, :)\

preg_match('/<a style="background-image: url\((.*?)\);" class="thumb" title="(.*?)" href=" (.*?)"><\/a>/', $string1, $matches);

作为一般规则,使用正则表达式解析 HTML 页面不是可行的方法。请参阅Parsing Html The Cthulhu Way。这里有很多关于 SO 的示例以获得更好的解决方案。

于 2013-04-06T13:21:21.707 回答