在html中匹配并替换str属性

时间:2016-01-07 10:45:10

标签: php regex

我有一个字符串,其中包含一些看起来像src="somethin/somethin/the_thing.ext"的子字符串,我想将每个子字符串转换为src="the_thing.ext"

src="/1/2/3.ext" -> src="3.ext"
src="a/b/c.ext" -> src="c.ext"
src="../d/e.ext" -> src="e.ext"
src="f/g.ext" -> g.ext
src="h.ext" -> h.ext

我尝试使用preg_replaceereg_replace在PHP中执行此操作 但是可以弄清楚如何对子表达式进行分组。 我的表达式由零个或多个东西组成/最后有一些文本(第一个东西可以前面只有一个/)

<?php
$string = '<img src="x.y"  alt="" />&nbsp;<img src="uploads/RTE.jpg"    
alt="" /><br /><img src="../uploads/RTEjpg" alt="" /> <img
src="/fileadmin/CPE.ztc">'
$pattern = '/src=\"(.*?)\"/';
$replacement = 'src="';
echo ereg_replace($pattern, $replacement, $string);
?>

我坚持使用模式和replacemnt,如何在正则表达式或扩展正则表达式中编写它们?

2 个答案:

答案 0 :(得分:0)

您需要做两件事:

  1. 您需要使用适当的框架来获取您所追求的src标记的内容。正则表达式本身是推荐的方式。 This之前的问题应该指出正确的方向。

  2. 使用如下表达式:(\w+\.\w+?$)(示例here)并将src标记的内容替换为第一个正则表达式组的内容。此表达式将匹配一个或多个字母,数字或下划线(\w+),后跟句点字符(.),后跟更多的字母,数字或下划线,最后是字符串的结尾({{ 1}})。

答案 1 :(得分:0)

使用lookbehind和lookahead然后persistence.xml

preg_replace

输出:

$string = '<img src="x.y"  alt="" />&nbsp;<img src="uploads/RTE.jpg"
alt="" /><br /><img src="../uploads/RTE.jpg" alt="" /> <img
src="/fileadmin/CPE.ztc">';
$pattern = '/(?<=src=")[^"]+(?<=\/)/';
$replacement = '';
echo preg_replace($pattern, $replacement, $string);