2

我有一个字符串$newstring,其中包含如下所示的行:

<tt>Thu 01-Mar-2012</tt> &nbsp; 7th of Atrex, 3009 <br>

我想$newstring使用<tt><br>作为分隔符进行爆炸。

我怎样才能使用preg_split()或其他任何东西来爆炸它?

4

6 回答 6

1

好吧,我在我的 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 => '' 
)

(见http://ideone.com/aiTi5U

于 2012-12-27T05:48:56.780 回答
0
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)))));
}

例如: $values = multiExplode(array("","
"),$your_string);

于 2013-08-12T11:28:48.797 回答
0

你应该试试这个代码..

<?php
$keywords = preg_split("/\<tt\>|\<br\>/", "<tt>Thu 01-Mar-2012</tt> &nbsp; 7th of Atrex, 3009 <br>");
print_r($keywords);
?>

查看CodePad示例。

如果您还想包含,请</tt>使用<\/?tt>|<br>... 请参阅示例

于 2012-12-27T05:57:21.187 回答
0

如果<tt>and<br/>标签是字符串中唯一的标签,那么像这样的简单正则表达式就可以了:

$exploded = preg_split('/\<[^>]+\>/',$newstring, PREG_SPLIT_NO_EMPTY);

表达式:分隔符分别以and
开始和结束 在这些字符之间至少需要 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类,请参阅此处的文档

PS:看实际输出,试试echo '<pre>'; var_dump($exploded); echo '</pre>';

于 2012-12-27T06:21:26.560 回答
0

试试这个代码..

  <?php

 $newstring = "<tt>Thu 01-Mar-2012</tt> &nbsp;7th of Atrex, 3009<br>";

 $newstring = (explode("<tt>",$newstring));
                   //$newstring[1] store Thu 01-Mar-2012</tt> &nbsp;7th of Atrex,      3009<br>  so do opration on that.

 $newstring = (explode("<br>",$newstring[1]));
 echo $newstring[0];
?> 

output:-->

 Thu 01-Mar-2012</tt> &nbsp;7th of Atrex, 3009
于 2012-12-27T05:54:15.157 回答
-1

这是一个带有示例的自定义函数。

http://www.phpdevtips.com/2011/07/exploding-a-string-using-multiple-delimiters-using-php/

于 2012-12-27T05:41:43.810 回答