PHP - 需要使用2个不同的分隔符来分解字符串

时间:2012-12-27 05:30:39

标签: php string explode

我有一个字符串$newstring,其中加载了如下所示的行:

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

我想使用$newstring<tt>作为分隔符来展开<br>

如何使用preg_split()或其他任何东西来爆炸它?

6 个答案:

答案 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 => '' 
)

(见http://ideone.com/aiTi5U

答案 1 :(得分: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

答案 2 :(得分: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>。请参阅Example

答案 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)