我有一个字符串$newstring
,其中加载了如下所示的行:
<tt>Thu 01-Mar-2012</tt> 7th of Atrex, 3009 <br>
我想使用$newstring
和<tt>
作为分隔符来展开<br>
。
如何使用preg_split()
或其他任何东西来爆炸它?
答案 0 :(得分: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 => ''
)
答案 1 :(得分:0)
试试这段代码..
<?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
答案 2 :(得分:0)
您应该尝试使用此代码..
<?php
$keywords = preg_split("/\<tt\>|\<br\>/", "<tt>Thu 01-Mar-2012</tt> 7th of Atrex, 3009 <br>");
print_r($keywords);
?>
答案 3 :(得分:0)
如果<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>';
答案 4 :(得分: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)))));
}
EX: $ values = multiExplode(array(“”,“
”),$ your_string);
答案 5 :(得分:-1)