2014-10-01 79 views
0

考虑到不能明确标题的风险,因为我无法用几句话来更好地解释它,我会准确描述我想要达到的目标。替换不属于某个特定字符串的文字

假设我有一篇名为“Ilha de Faro”的文章,并且在其描述中我想用相应的链接替换所有找到的相关文章名(来自db)。

到目前为止没有什么特别的。但是,如果相关的文章是“Faro”,“Praia”等,并且文章描述包含名称,我不希望它的文字被替换,所以“Ilha de Faro”不会转向“Ilha德法鲁“。

我正在考虑在关系替换发生之前用一些特殊的字符串(如#$%&或其他)替换所有出现的名称,然后将特殊字符串替换回文章名称。但是,我想知道,如果有更直接更清洁的方式来做到这一点,或者我的小解决方法是一个很好的做法吗?

预先感谢所有答案

编辑

我会得到更实际的看看这个。我还没有尝试过任何东西,因为我不在这个阶段,我只是在想未来。 所以,我有一张文章表,一篇文章可以有n篇相关文章。 具有下面的文章:

标题:青德法鲁

说明:Chamam-LHE青德法鲁MAS呐realidadeé乌玛半岛,ligadaà千佛菲尔米做拉多东帝汶,perto达埃莱的Quinta do Lago的。做lado oposto,par par leste,fica a barra,por onde passa anavegaçãocomercial e de recreio。 Embor a zona fronteira a Faro esteja ocupada por algumaconstrução,o areal pareceinterminávele propicia belos instantes de repouso efruiçãoda natureza。 De carro a partir da cidadesãodez minutos de viagem,nadirecçãodo aeroporto,havendo que contar com engarrafmentos e dificuldades de estacionamento noVerão。 Carreiras de barco a part do do cais de Faro(dondetambémpartem cruzeirosturísticosdiáriospelos canais,lagunas e ilhas da Ria Formosa)podem ser uma boa alternativa。

相关文章:法罗,利雅台塑

我想是呈现与相关的文章,是存在于文本链接的文章的描述,所以它会是这样的:

Chamam-lhe Ilha de Faro mas na realidadeéumapenínsula,ligadaàterra firme do lado leste,perto da elegante Quinta do Lago。做lado oposto,par par leste,fica a barra,por onde passa anavegaçãocomercial e de recreio。 Embor a zona fronteira a Faro esteja ocupada por algumaconstrução,o areal pareceinterminávele propicia belos instantes de repouso efruiçãoda natureza。 De carro a partir da cidadesãodez minutos de viagem,nadirecçãodo aeroporto,havendo que contar com engarrafmentos e dificuldades de estacionamento noVerão。 Carreiras de barco a partir do cais de <a> Faro </a>(dondetambémpartem cruzeirosturísticosdiáriospelos canais,lagunas e ilhas da <a> Ria Formosa </a>)podem ser uma boa alternativa。

注意粗体标题...它包含“Faro”,这是相关文章之一的标题,但我不想拥有“Ilha de <a> Faro </a>”。

我最初的想法是为模式创建一个相关文章标题的数组,并且为替换标记的标题创建另一个标题标题,但即使当相关文章标题包含在父文章标题中时,它也会替换所有内容。

+0

为什么不直接在数据库中更新呢?当你不告诉我们你试过的东西时,很难给出伪代码。 – 2014-10-01 23:13:13

+0

给出一些示例输入字符串和预期结果。 – Toto 2014-10-02 07:15:26

回答

0

那么,我试过我提出的解决方案,它的工作原理。如果有人知道这样做更清洁或“正确”的方式,欢迎提出建议。

无论如何,任何人谁都有这样的疑问,这里是我是如何做的:

$descTemp = preg_replace('/'.$articleTitle.'/', '!-article_title-!', $description); 
$descTemp2 = preg_replace($relatedArticleTitles, $relatedArticleLinks, $descTemp); 
$finalDescription = preg_replace('/!-article_title-!/', $articleTitle, $descTemp2);