html 忽略标签,处理HTML块,忽略特定标签内的内容

我想到的第一个解决方案如下所示:

提取所有代码

删除代码,用一个特殊的标记代替它们,不会受到字符串操作的影响 - 该标记必须非常特殊(并且可以验证它不存在于输入字符串中,btw) >

在字符串上执行操作

放回代码,现在有标记

UL>

在代码中,它可能是这样的:

(对不起,这是相当长的 - 我没有包括任何支票;这取决于你添加这些)$str = <<

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sodales lacus et erat accumsan consectetur. Sed lacinia enim vitae erat suscipit fermentum. Quisque lobortis nisi et lacus imperdiet ac malesuada dui imperdiet.

ThIs Is

CoDe 1Donec vestibulum commodo quam rhoncus luctus. Nam vitae ipsum sed nibh dignissim condimentum. Sed ultrices fermentum dapibus. Vivamus mattis nisi nec enim convallis quis aliquet arcu accumsan. Suspendisse potenti. Nullam eget fringilla nunc. Nulla porta justo justo. Nunc consectetur egestas malesuada. Mauris ac nisi ipsum, et accumsan lorem. Quisque interdum accumsan pellentesque. Sed at felis metus. Nulla gravida tincidunt tortor,

AnD cOdE 2
nec aliquam tortor ultricies vel. Integer semper libero eu magna congue eget lacinia purus auctor. Nunc volutpat ultricies feugiat. Nullam id mauris eget ipsum ultricies ullamcorper non vel risus. Proin volutpat volutpat interdum. Nulla orci odio, ornare sit amet ullamcorper non, condimentum sagittis libero.
aNd

CoDe

NuMbEr 3

Ut non justo at neque convallis luctus ultricies amet.

A;

var_dump($str);

// Extract the codes

$matches = array();

preg_match_all('#

(.*?)
#s', $str, $matches);

var_dump($matches);

// Remove the codes

$str_nocode = preg_replace('#

.*?
#s', 'THIS_IS_A_NOCODE_MARKER', $str);

var_dump($str_nocode);

// Do whaterver you want with $str_nocode

$str_nocode = strtoupper($str_nocode);

var_dump($str_nocode);

// And put back the codes :

$str_codes = $str_nocode;

foreach ($matches[0] as $code) {

$str_codes = preg_replace('#THIS_IS_A_NOCODE_MARKER#', $code, $str_codes, 1);

}

var_dump($str_codes);我尝试过:

代码在一行上,

两行代码

和多行代码

UL>

注意:你应该比我更真实地测试 - 但这可能会给你第一个想法...

希望这可以帮助 :-)

作为一个方面说明:通常,用正则表达式解析HTML被认为是不好的做法,并且经常导致麻烦......也许使用像DOMDocument::loadHTML这样的东西可能是一个值得看一看的想法?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值