我有一个字符串$newstring
,其中包含如下所示的行:
<tt>Thu 01-Mar-2012</tt> 7th of Atrex, 3009 <br>
我想$newstring
使用<tt>
和<br>
作为分隔符进行爆炸。
我怎样才能使用preg_split()
或其他任何东西来爆炸它?
好吧,我在我的 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 => ''
)
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);
如果<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>';
试试这个代码..
<?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
这是一个带有示例的自定义函数。
http://www.phpdevtips.com/2011/07/exploding-a-string-using-multiple-delimiters-using-php/