【发布时间】:2015-01-24 21:51:23
【问题描述】:
大家好,我编写了一个模块来创建一些文章并正确地对它们进行 css 处理,我想从文章内容中解析图像。我首先想到的是正则表达式。直到 3 小时我才开始阅读有关 regexp 的教程,并制作了一个对我来说似乎还不错的模式。
$pattern='^src\="images\/([a-zA-Z]+|[0-9]+)+([a-zA-Z]*|[0-9]*)*\.[jpg|png|bmp|gif]"$';
$regstring=$introtext;
preg_match($pattern,$regstring,$matches);
var_dump($matches);
输入:
<p>ASDADSDSASADSADSASDADSDSASADSADSASDADSDSASA</p>
<p><img src="images/authentic.jpg" alt="authentic" /></p>
<p>SASDADSDSASADSADSASDADSDSASADSADS</p>
我在 stackoverflow 中发现了很多与我完全不同的现成模式,我不想只是复制一些我不知道它们做什么的行。另外我发现十分钟前我可以用 DOM 做到这一点html ,但我很固执地让它与 regexpr 一起工作,所以我可以了解更多关于它的东西。 有人可以帮我找出我的错误吗? 感谢您的宝贵时间。
【问题讨论】:
-
不要使用正则表达式,使用 DOM ...
-
正如我已经提到的,我想先用正则表达式来实现它,所以我不会浪费我所有的阅读
-
你的模式有很多错误。
1)你没有delimiters。2)你的替换应该在一个类中,即[a-zA-Z0-9]+并且放在组之外的量词()+应该被删除。3)你不能在一个字符类中使用整个单词,所以你应该用一个组替换最后一个类,即(?:jpg|png|bmp|gif)。祝你好运。 -
我能问一下 ?: 代表什么吗?
-
是的,它是一个非捕获组。您可以阅读有关分组构造的信息here。
标签: regex html-parsing preg-match