我在尝试忽略某些字符之间的空格时遇到了问题。我在谷歌上搜索了几天,似乎找不到正确的解决方案。
下面是我的代码:
// Get Image data
preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch);
$image = $imagematch[4];
字符串
基本上,这些是我的一些场景:
<a href="/wiki/File:Sky1.png" title="File:Sky1.png"><img alt="Sky1.png" src="http://media-mcw.cursecdn.com/thumb/5/56/Sky1.png/150px-Sky1.png"width="150" height="84"></a>
型
(注意width="”和src="”之间没有空格)
还有
<a href="/wiki/File:TallGrass.gif" title="File:TallGrass.gif"><img alt="TallGrass.gif" src="http://media-mcw.cursecdn.com/3/34/TallGrass.gif" width="150"height="150"></a>
型
(注意width="”和height=""之间没有空格。)
有没有办法忽略这些字符之间的空格?因为我不是正则表达式Maven。
1条答案
按热度按时间axzmvihb1#
如果允许空格,则添加
\s?
。\s代表白色
**?**表示前面的字符可以出现一次或不出现。
如果允许有多个空格并且是可选的,则使用
\s*
。字符串
允许在属性名称和=之间使用可选空格。
如果您还想在
=
后面添加一个可选空格,请在它后面添加\s?
。同样,如果有可选字符,则可以使用
?
(如果最大出现次数是1)或*
(如果最大出现次数是无限的),并紧跟在可选字符之后。而你的实际问题是
[\s*]
,它会导致出现a whitespace或**a *,因为[
中包含的字符和]
是一个字符类。一个字符类允许它的任何成员出现一次(所以从它删除*
),如果你在]
之后附加一个量词(?
,+
,*
等),字符类中的任何字符都可以根据量词出现。