我想使用preg_replace删除alt属性。下面是alt属性的模式
alt="Screen Shot 2015-06-09 at 11.37.40 AM"或者可能是这样
alt="The Postmates sign outside the office"引号中可以有任何字符。我使用了以下表达式:
$html = preg_replace('/alt="\w+\s\w+"/', '><br>', $html);但它只替换了类型为alt的属性:
alt="The Postmates"这里合适的表达方式是什么?
发布于 2015-06-10 04:32:04
.*?应该这么做。
$html = preg_replace('/alt=".*?"/', '<br>', $html);这将将alt属性及其内容中的所有内容替换为<br>。
如果你这样做,那么在一个<br>元素中添加一个img就没有什么意义了.或者既然你有><br>,也许你想关闭img?alt总是最后一个属性吗?
.*?说要找到任何东西直到第一个“这个字符”,在这种情况下是双引号.更详细的..。
. =任何字符
* =0或更多前面字符出现的事件(如果需要至少一个事件,则用+替换)
? =使*变懒,意思是在第一次发生时停止,而不是最后一次发生
一个测试雷克斯的地方。http://regex101.com,http://www.phpliveregex.com/
学习regexs、http://www.rexegg.com/、http://www.regular-expressions.info/和许多其他站点的地方。
下面是一个测试,您可以看到这个正则表达式与http://www.phpliveregex.com/p/bvn一起工作。
根据您的最新情况:
$html = preg_replace('/alt=".*?"\s*/\?s*>/', '><br>', $html);/\将转义正斜杠,因为正斜杠是您的分隔符。正斜杠后面的?是可选的。\s*是零或更多的空白。这些可能出现在可选的闭幕式正斜杠的两边,这就是为什么我们两者都有的原因。
发布于 2015-06-10 04:30:37
我不确定PHP中的regexp有什么不同,但是尝试一下这个:
$html = preg_replace('~alt\s*=\s*"([^"]*)"~', '><br>', $html);在开始时,我们有一个alt,这是一个纯文本。
然后\s*的意思是“零或多个空格”。它是用来处理像alt = "something"这样的代码的。
=表示普通的等号。
\s*。
(^"*)的意思是“除引号外的任何符号。
https://stackoverflow.com/questions/30747101
复制相似问题