1

我需要使用正则表达式来提取不受某些标签(<ins><del>)约束的值。例如:

<?php
$a = "this text <ins>is designed to</ins> give the impression of a real king <ins> cobra </ins> in desert";
preg_match_all("/(?<!<del>|<ins>)(.+)(?!<\/del>|<\/ins>)/", $a, $matches);
var_dump($matches);
?>

我已经用上面的环视方法试过了,但是没有运气捕捉到标签之外的ins东西。del

有任何想法吗?

4

2 回答 2

1

如果您需要这些标签之外的文本,您可以使用与<ins>.*?</ins>or匹配的正则表达式拆分字符串<del>.*?</del>,甚至完全删除它们。您将留下周围的文字。我认为在这种情况下使用环视可能会使问题过于复杂。

于 2013-08-01T22:57:58.167 回答
0

试试这个正则表达式,它对我有用:

"/([^<>]+)|(?:<ins>[^<>]*<\/ins>)/"

抱歉必须修复它,那些在线正则表达式工具看起来并不那么可靠:) 这就是我让它工作的原因:

$string = 'this text <ins>is designed to</ins> give the impression of a real king <ins> cobra </ins> in desert';

preg_match_all('/([^<>]+)|(?:<ins>[^<>]*<\/ins>)/', $string, $match);

echo implode('', $match[1]);

结果:这段文字给人的印象是沙漠中真正的国王

于 2013-08-01T23:06:26.110 回答