2012-04-26 93 views
1

我用下面的代碼的PHP 稱爲文本在模板文件塊:刪除鏈接的標籤和內部HTML代碼生成的內容

echo $playlist->description 

字段包含HTML鏈接,我想當該字段的結果顯示爲使用twitter api創建的tweetbox內的內容時移除。顯示文本的

例子:

<a href="http://google.com">http://google.com</a> some text here. 

我期待實現以下目的:

some text here 

我看着與正則表達式,preg_replace完成這一點,其他幾個。但是,我還沒有弄清楚如何融入我現有的字符串。

我試過沒有成功以下,

echo $playlist->description->$str = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $str) 

我是一個自稱PHP小白,我已經花了幾個星期的努力完成我的目標,因此任何幫助是很大的讚賞。我覺得我真的很接近!幫幫我!!! :)

最好的問候, 邁克

+0

顯示你的模板代碼也請。 – Blake 2012-04-26 17:15:02

+0

我可以假設應該有一個終止'。'在你的示例輸出文本中,就像在輸入中那樣? – Madbreaks 2012-04-26 17:20:06

+0

@Madbreaks您是正確的先生,請在您提供的解決方案上查看我的其他問題。再次感謝您的幫助,您的解決方案運行良好! – 2012-04-26 19:34:36

回答

0
echo preg_replace('#.*?</a>\s*(.*)#', "$1", $playlist->description); 

乾杯

+0

你是一個紳士和學者!非常感謝你,我還有一個問題。你知道一個額外的修改,只允許顯示twitter用戶名,並刪除「n/a」和「blah blah blah」等文本,並將「@username」留下來顯示嗎? – 2012-04-26 18:16:28

+0

另外,如果可能,我想刪除「(」和「)」。再次感謝你的幫助! – 2012-04-26 18:18:21

1

,你也可以做到這一點,而無需使用正則表達式!

$a = end(explode('</a>' , $playlist->description)); 

這會給你自帶之後</a>

+0

嗯,爲什麼比RegEx更好? – Madbreaks 2012-04-26 19:11:54

+0

它更快,更簡單,更易於理解 – max 2012-04-26 23:07:24

+0

速度更快嗎?您正在解析字符串,創建一個數組然後對其進行操作。兩個函數調用。比。一個RegEx操作?我叫BS!更容易理解?在不知道問題的情況下,我很難看清那行代碼並理解它在做什麼。你正在處理一個字符串,使用字符串工具。 ;) – Madbreaks 2012-04-27 17:47:48

0

我做了一個函數,它們的內容一起刪除HTML標籤的所有內容:

功能:

<?php 
function strip_tags_content($text, $tags = '', $invert = FALSE) { 

    preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags); 
    $tags = array_unique($tags[1]); 

    if(is_array($tags) AND count($tags) > 0) { 
    if($invert == FALSE) { 
     return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text); 
    } 
    else { 
     return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text); 
    } 
    } 
    elseif($invert == FALSE) { 
    return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text); 
    } 
    return $text; 
} 
?> 

示例文本: $ text ='sample text with tags';

結果爲用strip_tags($文本):與標籤 示例文本

結果爲strip_tags_content($文本): 文字與

結果爲strip_tags_content($文本, ''): 樣本 text with

strip_tags_content($ text,'',TRUE);的結果 文本與標籤

我希望有人是有用的:)

相關問題