首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用preg_replace替代alt?

用preg_replace替代alt?
EN

Stack Overflow用户
提问于 2015-06-10 04:27:18
回答 2查看 1.1K关注 0票数 0

我想使用preg_replace删除alt属性。下面是alt属性的模式

代码语言:javascript
复制
alt="Screen Shot 2015-06-09 at 11.37.40 AM"

或者可能是这样

代码语言:javascript
复制
alt="The Postmates sign outside the office"

引号中可以有任何字符。我使用了以下表达式:

代码语言:javascript
复制
$html = preg_replace('/alt="\w+\s\w+"/', '><br>', $html);

但它只替换了类型为alt的属性:

代码语言:javascript
复制
alt="The Postmates"

这里合适的表达方式是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-10 04:32:04

.*?应该这么做。

代码语言:javascript
复制
$html = preg_replace('/alt=".*?"/', '<br>', $html);

这将将alt属性及其内容中的所有内容替换为<br>

如果你这样做,那么在一个<br>元素中添加一个img就没有什么意义了.或者既然你有><br>,也许你想关闭imgalt总是最后一个属性吗?

.*?说要找到任何东西直到第一个“这个字符”,在这种情况下是双引号.更详细的..。

. =任何字符

* =0或更多前面字符出现的事件(如果需要至少一个事件,则用+替换)

? =使*变懒,意思是在第一次发生时停止,而不是最后一次发生

一个测试雷克斯的地方。http://regex101.comhttp://www.phpliveregex.com/

学习regexs、http://www.rexegg.com/http://www.regular-expressions.info/和许多其他站点的地方。

下面是一个测试,您可以看到这个正则表达式与http://www.phpliveregex.com/p/bvn一起工作。

根据您的最新情况:

代码语言:javascript
复制
$html = preg_replace('/alt=".*?"\s*/\?s*>/', '><br>', $html);

/\将转义正斜杠,因为正斜杠是您的分隔符。正斜杠后面的?是可选的。\s*是零或更多的空白。这些可能出现在可选的闭幕式正斜杠的两边,这就是为什么我们两者都有的原因。

票数 3
EN

Stack Overflow用户

发布于 2015-06-10 04:30:37

我不确定PHP中的regexp有什么不同,但是尝试一下这个:

代码语言:javascript
复制
$html = preg_replace('~alt\s*=\s*"([^"]*)"~', '><br>', $html);

在开始时,我们有一个alt,这是一个纯文本。

然后\s*的意思是“零或多个空格”。它是用来处理像alt = "something"这样的代码的。

=表示普通的等号。

\s*

(^"*)的意思是“除引号外的任何符号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30747101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档