我最近使用了一种模式来替换双/双引号的双引号。preg_match_all:除html标记外,在引号内部获取文本
$string = preg_replace('/(\")([^\"]+)(\")/','“$2”',$string);
当$ string是句子,甚至是段落时,它工作正常。
但是......
我的函数可以调用到工作的HTML代码块,并且它不工作为例外了:
$string = preg_replace('/(\")([^\"]+)(\")/','“$2”','<a href="page.html">Something "with" quotes</a>');
回报
<a href=“page.html”>Something “with” quotes</a>
而且这是一个问题...
所以我认为我可以做到两遍:提取文本w ithin标签,然后替换引号。
我想这
$pattern='/<[^>]+>(.*)<\/[^>]+>/';
而且它的工作原理例如,如果字符串是
$string='<a href="page.html">Something "with" quotes</a>';
但它不与像字符串:
$string='Something "with" quotes <a href="page.html">Something "with" quotes</a>';
任何想法?
伯特兰
[小马HE COMES](HTTP ://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –
@Kolink我知道这会出现。这就是为什么我会建议使用simplexml,只将其应用于文本而不应用于属性。 – Christoph
我必须“清理”的字符串是90%的案例中的文本字段的值,并且在某些情况下,您可以在内部使用“代码”。这就是解析不合适的原因。 –