如何使用PHP解析大字符串中的数据?

时间:2015-11-19 11:37:00

标签: php parsing

我有一个大字符串,如下所示(数据集的数量未知):

  p '5123': {
            p 'tmp': p '1', p 'name': p 'mango', p 'abc': p 'abcd4 http://mysite/items/1234', p 'number': p '1123', p 'itemCategory_title': p 'fruits', p 'logo': p '2123.png', p 'itemCategory_id': p '90'
        }, p '700': {
            p 'tmp': p '0', p 'name': p 'cherry', p 'abc': p 'abcd4 http://mysite/items/1235', p 'number': p '1124', p 'itemCategory_title': p 'fruits', p 'logo': p '2124.png', p 'itemCategory_id': p '91'
        }, p '800': {
....................

我想从中提取以下数据并为每组数据创建超链接! (提取以下值:tmp,name,abc,number,itemCategory_title,logo,itemCategory_id)

任何人都可以告诉我如何提取以下数据吗?先谢谢。

抽取一组要提取的数据:

tmp=1
 name=mango
 abc=abcd4 http://mysite/items/1234
 number=1123
 itemCategory_title=fruits
 log=2123.png
 itemCategory_id=90

通过php输出这个html超链接:

<a href="./process.php?tmp=1&name=mango&abc=abcd4 http://mysite/items/1234&number=1123&itemCategory_title=fruits&log=2123.png&itemCategory_id=90">mango </a> <br />
<a href="./process.php?tmp=1&name=cherry&abc=abcd4 http://mysite/items/1235&number=1124&itemCategory_title=fruits&log=2124.png&itemCategory_id=91">cherry </a> <br />

code2保存示例输入字符串:

    $code2 = stripslashes($_POST['outputtext']);
$clean_str = str_replace("p '","'",$code2);

$serialized = serialize($clean_str);
$expected_array = unserialize($serialized);
print_r($expected_array);


      // iterate the new array
    for($i = 0; $i < count($expected_array); $i++){
    ?>
    <a href="./process.php?tmp=<?php  echo $expected_array['tmp'] ; ?>&name=<?php  echo $expected_array['name'] ; ?>&abc=<?php  echo $expected_array['abc'] ; ?>&itemCategory_title=<?php  echo $expected_array['itemCategory_title'] ; ?>&log=<?php  echo $expected_array['log'] ; ?>&itemCategory_id=<?php  echo $expected_array['itemCategory_id'] ; ?>"><?php  echo $expected_array['itemCategory_title'] ; ?> </a> <br />
    <?
    }

1 个答案:

答案 0 :(得分:0)

你可以在这里使用一个技巧。如果您知道p在任何地方都很常见,那么将其从字符串中删除。

$str = "{ p '5123': {
            p 'tmp': p '1', p 'name': p 'mango', p 'abc': p 'abcd4 http://mysite/items/1234', p 'number': p '1123', p 'itemCategory_title': p 'fruits', p 'logo': p '2123.png', p 'itemCategory_id': p '90'
        }, p '700': {
            p 'tmp': p '0', p 'name': p 'cherry', p 'abc': p 'abcd4 http://mysite/items/1235', p 'number': p '1124', p 'itemCategory_title': p 'fruits', p 'logo': p '2124.png', p 'itemCategory_id': p '91'
        } }";
$clean_str = str_replace("p '","'",$str);

现在好像是json string;

$expected_array = json_decode($clean_str);