2014-10-01 83 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);