2010-04-24 49 views
0

我想從腳本中刪除以下類型的表達式。php:通過正則表達式刪除單詞

<a any text here>nothing or space here</a> 

我可以做到三個功能,但我認爲有一種方法更短。 你能幫助我嗎? 由於事先

+0

正如阿里納斯,如果你正在尋找清理HTML,你是用HTML解析器更好。看到這個着名的答案(/問題):http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – pinkgothic 2010-04-24 11:14:51

回答

2

請問preg_replace('/<a(.*?)>\s*<\/a>/', '', $str)有用嗎?

編輯:艾倫摩爾是正確的。

+0

preg_replace('/ 。* <\/a> /','',$ str)將會。 http://rubular.com/r/uFatSqs2Vj – Gazler 2010-04-24 11:01:37

+1

+1,除了「這裏沒有任何東西或空間」意味着'\ s *'給我,而不是'\ s +'。 – 2010-04-24 12:03:37

0

http://www.regular-expressions.info/php.html摘自:

mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])返回與替換字符串替換主題字符串中的正則表達式的所有匹配的字符串。

最多可以進行極限更換。一個關鍵的區別是,除限制外,所有參數都可以是數組而不是字符串。

在這種情況下,preg_replace多次執行其作業,同時遍歷數組中的元素。你也可以使用字符串作爲參數,而數組則作爲其他數據。然後函數將遍歷數組,併爲每次迭代使用相同的字符串。使用模式和替換的數組,允許您對單個主題字符串執行一系列搜索和替換操作。使用主題字符串數組,可以對許多主題字符串執行相同的搜索和替換操作。

0
$text = '<a any text here>nothing or space here</a>'; 
$rep = ''; 
$pat = '|<a[^>]*>\S*</a>|'; 
echo preg_replace($pat,$rep,$text); 

編輯:錯了一個

$text = '<a any text here>nothing or space here</a>'; 
$rep = '<a>\1</a>'; 
$pat = '|<a[^>]*>([^<]*)</a>|'; 
echo preg_replace($pat,$rep,$text); 
+1

我覺得OP想要刪除整個字符串,不僅僅是「這裏的任何文本」部分「(紅色着色只是SO的語法熒光筆有點太熱心) – 2010-04-24 12:10:32

+0

ops,什麼是noob ...我是對不起,這是我的第四天,我仍然陷入陷阱,試圖盡我所能。 – Cesar 2010-04-24 15:11:30