dqxz96998 2013-06-20 21:57
浏览 84
已采纳

用preg_replace和php替换span标签:出了什么问题?

I'm trying to clean some html pages using preg_replace.

For a misconfiguration of the wysiwyg editor I have a lot of contents with inline styles and I need to clean them.

This is sample piece of content:

<span style="font-size: 10pt; color: rgb(85, 85, 85); font-family: helvetica; font-weight: normal; line-height: 14pt;">HDR è l’acronimo di High Dynamic Range: <strong>siamo di fronte ad una tecnica di post produzione che permette, unendo più immagini, di realizzare una fotografia che sarebbe impensabile con un solo ed unico scatto</strong>. Per farsi un’idea del tipo di foto che si possono realizzare utilizzando la tecnica HDR basta guardare lo scatto qui sopra: colpiscono i colori, la resa delle ombre, le sfumature. Sembra quasi di trovarsi di fronte ad una cartolina. Può sembrare impossibile, ma per realizzare una fotografia così bastano davvero pochi minuti se il materiale di partenza è buono, e questa guida vi aiuterà proprio a raggiungere questo obiettivo.<br>
<br>
<span style="font-size: 13pt; color: rgb(85, 85, 85); font-family: helvetica; font-weight: bold; line-height: 17pt;"> Non solo fotografie innaturali</span><br>
Anche se lo scopo di questo tutorial è di realizzare una vera fotografia HDR, quindi molto carica cromaticamente e molto d’effetto, l’uso dell’HDR è utilissimo anche in molti altri casi, come ad esempio salvare fotografie che non sono state scattate con la giusta esposizione. In questo caso si utilizzano regolazioni meno invasive e soprattutto si parte da un unico scatto, proprio perché è un'operazione di “recupero” di una fotografia venuta male. <br>
<br>
<span style="font-size: 13pt; color: rgb(85, 85, 85); font-family: helvetica; font-weight: bold; line-height: 17pt;">Cosa serve per realizzare una foto HDR</span><br>
Non sono alti i requisiti per una buona foto HDR. <strong>Bastano una macchina fotografica reflex o una bridge abbastanza evoluta, un cavalletto e un software disponibile per PC o Mac, chiamato Photomatix.</strong> Anche il più popolare Photoshop permette di elaborare fotografie HDR, tuttavia Photomatix costa molto meno, e per certi aspetti è anche più completo e intuitivo. Photomatix può essere scaricato dal sito della <a target="_blank" href="http://www.hdrsoft.com"><em>HDRSoft</em></a> anche in versione di prova.<br>
Un po’ più rigidi i criteri di scelta della macchina fotografica: <strong>per realizzare, infatti, una fotografia HDR servono tre o più fotografie</strong> con una caratteristica fondamentale, ossia stessa apertura di diaframma (altrimenti cambia la profondità di campo) e diversa esposizione. Nel caso di tre fotografie la situazione ideale è partire con una foto sottoesposta, una foto correttamente esposta e una foto sovraesposta. Se le foto fossero cinque, ci sarebbero due foto sottoesposte a diversi livelli di sottoesposizione, due foto sovraesposte e l'ultima correttamente esposta. Le macchine fotografiche reflex hanno una funzione denominata “bracketing espositivo”: questa funzione serve proprio per scattare tre o più fotografie, a seconda del modello, con le caratteristiche che servono a noi. Nelle bridge di recente generazione è stata aggiunta questa funzione, e se così non fosse si deve scattare in manuale ricordandosi sempre di non cambiare in alcun modo il diaframma, ma solo la compensazione dell’esposizione.</span>

I'm trying to replace:

<span style="font-size: 13pt; color: rgb(85, 85, 85); font-family: helvetica; font-weight: bold; line-height: 17pt;">Cosa serve per realizzare una foto HDR</span>

with:

<h3>Cosa serve per realizzare una foto HDR</h3>

and to clean this span style removing the tag:

<span style="font-size: 10pt; color: rgb(85, 85, 85); font-family: helvetica; font-weight: normal; line-height: 14pt;">

This is my code:

$string = $singleArticle['body'];

$regex = '%^(<span(.*?)style="font-size: 13pt; color: rgb(85, 85, 85); font-family: helvetica; font-weight: bold; line-height: 17pt;"(.*?)>(.*?)</span>)$%';
$replace = '<h3>$4</h3>';
echo preg_replace($regex, $replace, $string);

Nothing happens, and nothing is stripped. Can someone explain this for me?

  • 写回答

1条回答 默认 最新

  • duandou1903 2013-06-20 22:06
    关注

    You should escape the opening and closing parenthesis because they are considered as grouping tokens in regex.

    $regex = '%(<span(.*?)style="font-size: 13pt; color: rgb\(85, 85, 85\); font-family: helvetica; font-weight: bold; line-height: 17pt;"(.*?)>(.*?)</span>)$';
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛