2011-12-14 72 views
0
<span class="fwb">Harry and David</span> 

<span class="fcg">Business Intelligence Developer/Analyst</span> 
<span class="fcg">Oct 1998 to present</span> 
<span class="fcg">Medford, Oregon</span> 

<span class="fsm fwn fcg">Creative writing</span> 

In my html content 
<span class="fwb"> occured more than 4 times, 
<span class="fcg"> occured more than 10 times, 
<span class="fsm fwn fcg">Creative writing</span> occured more than 5 times. 

使用php reg表达式或DOMDocument()我需要替换所有要附加的符号。使用符号或符号替换HTML标签值

对于前:

<span class="fwb">Harry and David</span> to be replaced by <span class="fwb">Harry and David$</span> 

<span class="fcg">Business Intelligence Developer/Analyst</span> to be replaced by  <span class="fcg">Business Intelligence Developer/Analyst$</span> 

回答

0

你很难从你的代码示例,以理解,但我相信你正在寻找一个$标志追加到每个<span>标签的结束(?)。使用DomDocument做到这一点:

$str = ' 
<span class="fwb">Harry and David</span> 
<span class="fcg">Business Intelligence Developer/Analyst</span> 
'; 

$dom = new DomDocument(); 
$dom->loadHTML($str); 

$spans = $dom->getElementsByTagName('span'); 
foreach ($spans as $span) { 
    $span->nodeValue = $span->nodeValue . '$'; 
    echo $dom->saveHTML($span) . "\n"; 
} 

你可以像你说的,也可以使用preg_replace()像这样:

$str = ' 
<span class="fwb">Harry and David</span> 
<span class="fcg">Business Intelligence Developer/Analyst</span> 
'; 

$p = '{(<span[^>]*>)([^<]+)(</span>)}'; 
$r = '$1$2\$$3'; 
echo preg_replace($p, $r, $str); 

此正则表达式例子追加$到每个跨度节点的主题HTML文本结束。

+0

正则表达式工作,并解决了我的问题。 Domdocument显示错误DOMDocument :: saveHTML()期望完全为0的参数,1在/var/www/fbcrawl/testing.php中给出的第20行。给出一个最好的链接学习abt reg表达式 – 2011-12-14 06:32:21