我有裝載看起來像線串$newstring
:PHP - 需要一個爆炸串2名不同的分隔符
<tt>Thu 01-Mar-2012</tt> 7th of Atrex, 3009 <br>
我想用<tt>
和<br>
作爲分隔符爆炸$newstring
。
如何使用preg_split()
或其他任何東西來爆炸它?
我有裝載看起來像線串$newstring
:PHP - 需要一個爆炸串2名不同的分隔符
<tt>Thu 01-Mar-2012</tt> 7th of Atrex, 3009 <br>
我想用<tt>
和<br>
作爲分隔符爆炸$newstring
。
如何使用preg_split()
或其他任何東西來爆炸它?
下面是一個帶有示例的自定義函數。
http://www.phpdevtips.com/2011/07/exploding-a-string-using-multiple-delimiters-using-php/
不要給只有鏈接的答案。 –
[回顧這個元問題](http://meta.stackexchange.com/q/8231/135887),爲什麼只有鏈接的答案不好。 – Charles
好吧,我對我的Nexus 7,我發現這是不是太優雅的回答在平板電腦上的問題,但無論如何你可以使用preg_split
使用以下正則表達式做到這一點:
<\/?tt>|</?br>
見正則表達式在這裏工作:http://www.regex101.com/r/kX0gE7
PHP代碼:
$str = '<tt>Thu 01-Mar-2012</tt> 7th of Atrex, 3009<br>';
$split = preg_split('@<\/?tt>|</?br>@', $str);
var_export($split);
數組$split
將包含:
array (
0 => '',
1 => 'Thu 01-Mar-2012',
2 => ' 7th of Atrex, 3009',
3 => ''
)
不知何故,當我嘗試回顯它時,它不顯示新變量。 $ newtring = preg_split('\ | \ <\/tt\> | \
',$ curl_scraped_page); 確認$ curl_scraped_page包含數據。 echo $ newstring不顯示任何東西 –
@Petah爲什麼不呢?我會更新答案。 :-) –
@JordanFine你在正則表達式的開頭和結尾忘了分隔符。所有的PHP preg_XXX函數都需要它們。 – Barmar
試試這個代碼..
<?php
$newstring = "<tt>Thu 01-Mar-2012</tt> 7th of Atrex, 3009<br>";
$newstring = (explode("<tt>",$newstring));
//$newstring[1] store Thu 01-Mar-2012</tt> 7th of Atrex, 3009<br> so do opration on that.
$newstring = (explode("<br>",$newstring[1]));
echo $newstring[0];
?>
output:-->
Thu 01-Mar-2012</tt> 7th of Atrex, 3009
這只是說「Array」作爲輸出 –
我正在$ newstring中顯示結果存儲。你想在程序中使用結果,那麼輸出值將得到$ newstring [0]。 – Sandy8086
不應該newstring現在只包含所有以開始並以
結尾的子串?所以如果我回聲$ newstring,它不應該顯示它們嗎? –
如果<tt>
和<br/>
標籤字符串中的唯一的標籤,這樣一個簡單的正則表達式會做:
$exploded = preg_split('/\<[^>]+\>/',$newstring, PREG_SPLIT_NO_EMPTY);
表達:
分隔符開始,以<
結束,>
分別
在在這些字符之間至少有1個[^>]
(這是任何字符除外關閉>
PREG_SPLIT_NO_EMPTY
這是一個常數,傳遞給preg_split
功能避免了空字符串數組值:
$newString = '<tt>Foo<br/><br/>Bar</tt>';
$exploded = preg_split('/\<[^>]+\>/',$newstring);
//output: array('','Foo','','Bar',''); or something (off the top of my head)
$exploded = preg_split('/\<[^>]+\>/',$newstring, PREG_SPLIT_NO_EMPTY);
//output: array('Foo', 'Bar')
但是,如果你處理這些兩個以上的標籤,或者輸入變量(就像用戶提供的那樣),你最好解析標記。查看php的DOMDocument
課程,請參閱the docs here。
PS:看到實際的輸出,嘗試echo '<pre>'; var_dump($exploded); echo '</pre>';
function multiExplode($delimiters,$string) {
return explode($delimiters[0],strtr($string,array_combine(array_slice($delimiters,1),array_fill(0,count($delimiters)-1,array_shift($delimiters)))));
}
EX: $值= multiExplode(陣列( 「」, 「
」),$ your_string);
那麼你到目前爲止嘗試過什麼?你是如何得到這些字符串的? –
以你的方向從字面上看,我希望得到的結果有以下三個部分:_empty string_,'週四01-MAR-2012 ATREX,3009',_empty string_的第7位。爲了清楚起見,您的預期結果是什麼? – Wiseguy
這些字符串來自卷頁的網頁。我試圖通過將它分解成由和
分隔的子字符串來清理字符串。我是新來的正則表達式等,所以我試圖得到一個preg_split表達式,它將做到這一點。 –