2014-01-16 44 views
0

我想刪除下列 - 標題= \ 「huluId-581956 \」 - 從一個字符串,以便:正則表達式工作不正常時投入的preg_replace

<a title=\"huluId-581956\" href="somelink">My Link</a> 

成爲

<a href="somelink">My Link</a> 

我基本上希望將title屬性取出。我巧妙我EXP上regexpal並把它變成了preg_replace這樣:

$myString ='<a title=\"huluId-581956\" href="somelink">My Link</a>'; 

$myString = preg_replace('/(title=\\)("huluId-)[0-9]+\\(")/', '', $myString); 
$myString = preg_replace('/(title=\\)("huluId-)[0-9]+(\\")/', '', $myString); 

不過,雖然上regexpal我沒有問題,選擇標題屬性,當我把表達成的preg_replace這是行不通的。

任何幫助將不勝感激,因爲我不知道爲什麼會這樣。

謝謝!

+0

好吧,你想從替換變量是'$ html',但你把'$ myString'內容。如果不是這樣,可能太多'''。也許你可以使用XML解析器來提取屬性,以防你的''在未來表現不佳? – bishop

+0

對不起,這是我縮短髮布內容時犯的一個錯誤。我現在糾正了它。它顯然應該是$ myString。至於XML解析能否請您進一步解釋 - 我在該部門沒有任何經驗。謝謝 –

回答

2

只需用這個代替:也

$myString = preg_replace('/\s+title=\\\\"[^"]+"/', '', $html); 

,因爲我不是你想利用這個什麼情況下知道做什麼,也許可以考慮使用DOM解析器,因爲正則表達式是不是合適的工具HTML解析...像PHP Simple HTML DOM Parser DOM解析器能夠做到這一點很容易...

Working DEMO

+0

你測試過了嗎?似乎不適合我。 – mikevoermans

+0

@mikevoermans,更正後,您必須使用3個手指才能逃脫您獲得我的投票的第4個xD – Enissay

+0

。這是很多斜槓... – mikevoermans

0

斜槓混亂了正則表達式 - 將它們去掉,它使生活更輕鬆。

$myString ='<a title=\"huluId-581956" href="somelink">My Link</a>'; 
$myString = stripslashes($myString); 
$myString = preg_replace('/title="huluId-[0-9]+" /', '', $myString); 
echo $myString; 
+0

嗨 - 這是一個更長的字符串的一部分,我不能亂它,當然除了刪除title屬性。是的,如果反斜槓不在那裏,它會簡單得多,但是正因如此,它們必須是。除非你知道只在該部分剝離反斜槓的方法 - 標題標籤。 –

0

考慮到你將通常有「稱號後」的斜線你可以有一個簡單的正則表達式:

/title=\\"(.)*?"/ 

這後「標題= \選擇一切「」,和‘’使其對下一個字符結束? ,這是一個引號。

代碼:

$myString ='<a title=\"huluId-581956\" href="somelink">My Link</a>'; 

$myString = preg_replace('/title=\\"(.)*?"/', '', $myString);