2011-04-22 24 views
0

比方說,我們有一個字符串($文本)採取一個大的文本的一部分

I will help you out, if <b>you see this message and never forget</b> blah blah blah 

我想利用文字從「<b>」到「</b>」成一個新的字符串($文本2) 如何這可以做到嗎?

我感謝任何幫助,我可以得到。謝謝!

編輯: 我想採取這樣的代碼。如果您要查找的行爲

<embed type="application/x-shockwave-flash"></embed> 
+0

[從字符串中提取DOM元素的可能的重複,在PHP中。](http://stackoverflow.com/questions/5126967/extract-dom-elements-from-string-in-php) – 2011-04-22 19:19:12

+0

我的答案有一個使用DOMDocument的完整示例 – adam 2011-04-22 19:29:54

回答

2

如果你只是想在第一場比賽,不想匹配類似<b class=">,下面的工作:

更新的評論:

$text = "I will help you out, if <b>you see this message and never forget</b> blah blah blah"; 
$matches = array(); 
preg_match('@<b>.*?</b>@s', $text, $matches); 
if ($matches) { 
    $text2 = $matches[0]; 
    // Do something with $text2 
} 
else { 
    // The string wasn't found, so do something else. 
} 

但更多的東西複雜的,你真的應該把它解析爲每個Marc B.的評論的DOM。

+0

我得到這個錯誤「未定義偏移:0」任何想法?在線「$ text2 = $ matches [0];」 – Muazam 2011-04-22 19:39:24

+0

是的,你的$ text字符串沒有'....'顯然。你可以嘗試一下我上面更新的示例(它也通過正確檢查是否找到任何匹配來處理偏移問題)。 – 2011-04-22 19:46:33

+0

謝謝,它工作。但你認爲我也可以得到標籤嗎?並獲得像嵌入標籤的東西?非常感謝! – Muazam 2011-04-22 20:07:07

-1
strip_tags($text, '<b>'); 

將只提取<b> </b>

之間的部分字符串。

+0

不幸的是,這將返回字符串中不屬於php或html標記(或NUL字符)的所有文本。他正在尋找的只是獲取的內容 – adam 2011-04-22 19:28:56

1

使用這種糟糕的美富:http://fr2.php.net/domdocument

$dom = new DOMDocument(); 
$dom->loadHTML($text); 

$xpath = new DOMXpath($dom); 
$nodes = $xpath->query('//b'); 

在這裏,您既可以通過每一個迴路,或者如果你知道只有一個,只要抓住價值。

$text1 = $nodes->item(0)->nodeValue; 
+0

值得注意的是,該文本需要是有效的dom內容,否則xpath會對您,您的字符串,您的程序,您的用戶和您的虛擬主機生氣 – adam 2011-04-22 19:31:41

+0

亞當@我得到這個錯誤「調用未定義的函數loadHTML()」感謝您的幫助。這是否也適用於嵌入代碼? – Muazam 2011-04-22 19:35:25

+0

哈哈,我的壞Muazam。我是白天的Java人,這就是爲什麼我寫$ dom.loadHTML,當它應該是$ DOM-> loadHTML。你應該明確地使用這種方法來選擇一個,因爲它的全部OO和眼睛上的簡短易用 – adam 2011-04-22 23:36:18

相關問題