Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP精简文本(包括html标记)_Php - Fatal编程技术网

PHP精简文本(包括html标记)

PHP精简文本(包括html标记),php,Php,之所以得到“(“and”)”是因为某些“行”将有多个值 我正在寻找一个简单的方法来做到这一点 $str='1〕 <row> <date>2016-05-30</date> <name>name</name> <animal>cat</animal> </row> >>>(2016-05-20)>(名称)>(cat)>(2016-05-20)>(名称)>(cat)>(2016-

之所以得到“(“and”)”是因为某些“行”将有多个值

我正在寻找一个简单的方法来做到这一点

$str='1〕
<row>
    <date>2016-05-30</date>
    <name>name</name>
    <animal>cat</animal>
</row>
>>>(2016-05-20)>(名称)>(cat)>(2016-05-20)>(名称)>(cat)>(2016-05-20)>(名称)>(cat)字符串(37)”(2016-05-20)>(名称)>(cat) [1] =>字符串(37)”(2016-05-20)>(名称)>(类别) [2] =>字符串(37)”(2016-05-20)>(名称)>(类别) } [1]=> 阵列(3){ [0]=>字符串(10)“2016-05-20” [1] =>字符串(10)“2016-05-20” [2] =>字符串(10)“2016-05-20” } [2]=> 阵列(3){ [0]=>字符串(4)“名称” [1] =>字符串(4)“名称” [2] =>字符串(4)“名称” } [3]=> 阵列(3){ [0]=>字符串(3)“cat” [1] =>字符串(3)“cat” [2] =>字符串(3)“cat” } }
但这是HTML上的正则表达式,可能会导致问题。
如果使用strip_tags()会更安全,但在我的测试字符串上,它并没有像所有字符串都集中在一行中那样工作良好。他们不应该这样做。
我建议你先试试脱衣舞。这可能是我的测试字符串上的换行错误

编辑:对不起,我忘记了你想要的结果:

$str='1〕
>>>(2016-05-20)>(姓名)>(猫)>(2016-05-20)>(姓名)>(猫)>(2016-05-20)>(姓名)>(猫)试试这个:-

$str = '<document page-count="3">
<page number="1">
<table id="p1" data-page="1" data-table="1">>>>(2016-05-20)<<< >>>(name)<<< >>>(cat)<<< </table>
</page>
<page number="2">
<table id="p2" data-page="1" data-table="1">>>>(2016-05-20)<<< >>>(name)<<< >>>(cat)<<< </table>
</page>
<page number="3">
<table id="p3" data-page="1" data-table="1">>>>(2016-05-20)<<< >>>(name)<<< >>>(cat)<<< </table>
</page>';
preg_match_all("/\((\d{4}-\d{2}-\d{2})\).*\((\w+)\).*\((\w+)\)/",$str,$match);
//preg_match_all("/\((\d{4}-\d{2}-\d{2})\).*\((\w+)\).*\((\w+)\)/",strip_tags($str),$match);
$newstr= "";
for($i=0;$i<=count($match[0])-1;$i++){
    $newstr .= "<row>
    <date>" . $match[1][$i] ."</date>
    <name>" . $match[2][$i] ."</name>
    <animal>".$match[3][$i] ."</animal>
    </row>
    ";
}
echo $newstr;
要符合您的要求,请添加以下代码:-

$str = '';
foreach($res as $v){
  $str .= '<row>';
  $str .= "<date>{$v[0]}</date>";
  $str .= "<name>{$v[1]}</name>";
  $str .= "<animal>{$v[2]}</animal>";
  $str .= '</row>';
}
echo $str;
$str='';
foreach($res作为$v){
$str.='';
$str.=“{$v[0]}”;
$str.=“{$v[1]}”;
$str.=“{$v[2]}”;
$str.='';
}
echo$str;
输出:-

<row>
<date>2016-05-20</date>
<name>name</name>
<animal>cat1</animal>
</row>
<row>
<date>2016-05-21</date>
<name>name1</name>
<animal>cat2</animal>
</row>
<row>
<date>2016-05-22</date>
<name>name2</name>
<animal>cat3</animal>
</row>

2016-05-20
名称
第一类
2016-05-21
名称1
第二类
2016-05-22
姓名2
第三类

@mezt这方面运气好吗?这些答案中有没有有用的,或者你需要更多的帮助?
$str = '<document page-count="3">
<page number="1">
<table id="p1" data-page="1" data-table="1">>>>(2016-05-20)<<< >>>(name)<<< >>>(cat)<<< </table>
</page>
<page number="2">
<table id="p2" data-page="1" data-table="1">>>>(2016-05-20)<<< >>>(name)<<< >>>(cat)<<< </table>
</page>
<page number="3">
<table id="p3" data-page="1" data-table="1">>>>(2016-05-20)<<< >>>(name)<<< >>>(cat)<<< </table>
</page>';
preg_match_all("/\((\d{4}-\d{2}-\d{2})\).*\((\w+)\).*\((\w+)\)/",$str,$match);
//preg_match_all("/\((\d{4}-\d{2}-\d{2})\).*\((\w+)\).*\((\w+)\)/",strip_tags($str),$match);
$newstr= "";
for($i=0;$i<=count($match[0])-1;$i++){
    $newstr .= "<row>
    <date>" . $match[1][$i] ."</date>
    <name>" . $match[2][$i] ."</name>
    <animal>".$match[3][$i] ."</animal>
    </row>
    ";
}
echo $newstr;
$str = '<document page-count="3">
<page number="1">
<table id="p1" data-page="1" data-table="1">>>>(2016-05-20)<<< >>>(name)<<< >>>(cat1)<<< </table>
</page>

<page number="2">
<table id="p2" data-page="1" data-table="1">>>>(2016-05-21)<<< >>>(name1)<<< >>>(cat2)<<< </table>
</page>

<page number="3">
<table id="p3" data-page="1" data-table="1">>>>(2016-05-22)<<< >>>(name2)<<< >>>(cat3)<<< </table>
</page>';


preg_match_all('/>>>\((.*?)\)<<</', $str, $matches);
$res =  array_chunk($matches[1], 3);
echo '<pre>'; print_r($res);
Array
(
    [0] => Array
        (
            [0] => 2016-05-20
            [1] => name
            [2] => cat1
        )

    [1] => Array
        (
            [0] => 2016-05-21
            [1] => name1
            [2] => cat2
        )

    [2] => Array
        (
            [0] => 2016-05-22
            [1] => name2
            [2] => cat3
        )

)
$str = '';
foreach($res as $v){
  $str .= '<row>';
  $str .= "<date>{$v[0]}</date>";
  $str .= "<name>{$v[1]}</name>";
  $str .= "<animal>{$v[2]}</animal>";
  $str .= '</row>';
}
echo $str;
<row>
<date>2016-05-20</date>
<name>name</name>
<animal>cat1</animal>
</row>
<row>
<date>2016-05-21</date>
<name>name1</name>
<animal>cat2</animal>
</row>
<row>
<date>2016-05-22</date>
<name>name2</name>
<animal>cat3</animal>
</row>