jam*_*c19 35 php regex preg-match removing-whitespace
我在尝试忽略某些字符之间的空格时遇到了问题.我一直在谷歌搜索几天,似乎无法找到正确的解决方案.
这是我的代码:
// Get Image data
preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch);
$image = $imagematch[4];
Run Code Online (Sandbox Code Playgroud)
基本上这些是我的一些场景:
<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>
Run Code Online (Sandbox Code Playgroud)
(注意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>
Run Code Online (Sandbox Code Playgroud)
(注意在width =""和height =""之间缺少空格.)
无论如何要忽略这些角色之间的空白?因为我不是正则表达式专家.
Nav*_*d S 88
\s?如果允许空格,请添加一个.
\ s代表白色空间
?说前面的字符可能发生一次或不发生.
如果允许多个空格并且是可选的,请使用\s*.
*说前面的字符可以出现零次或多次.
'#<a href\s?="(.*?)" title\s?="(.*?)"><img alt\s?="(.*?)" src\s?="(.*?)"[\s*]width\s?="150"[\s*]height\s?="(.*?)"></a>#'
Run Code Online (Sandbox Code Playgroud)
允许属性名称和=之间的可选空格.
如果你想要一个可选空格,=也可以\s?在它之后添加一个空格.
同样,只要有可选字符,只要?最大出现次数为1,或者*最大出现次数不受限制,就可以使用可选字符.
而你的实际问题是[\s*]导致出现空格或*作为字符括起来[并且]是一个字符类.字符类允许其任何成员的一次出现(因此除去*来自它),如果你追加一个量词(?,+,*后等)]在字符类可以根据量词发生的任何字符(多个).
| 归档时间: |
|
| 查看次数: |
51162 次 |
| 最近记录: |