2013-08-01 16 views
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); 
?> 

我與上述lookarounds想這一點,但沒有運氣捕捉什麼是insdel標籤之外。

任何想法?

+0

應該在這種情況下,輸出是完全地什麼一個真正的王者的印象如何? –

回答

1

如果您需要這些標籤外的文本,可以使用匹配<ins>.*?</ins><del>.*?</del>的正則表達式來分割字符串,或者甚至完全刪除它們。你會留下週圍的文字。我認爲在這種情況下使用lookaround會使問題過於複雜。

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]); 

結果: 這段文字給沙漠