Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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 在数据库单元格中,查找关键字以从';引号';将断线分开放置<;李>;标签_Php_Mysql_Database - Fatal编程技术网

Php 在数据库单元格中,查找关键字以从';引号';将断线分开放置<;李>;标签

Php 在数据库单元格中,查找关键字以从';引号';将断线分开放置<;李>;标签,php,mysql,database,Php,Mysql,Database,我正在使用php从数据库中提取信息,但我遇到了这个问题的绊脚石: 我有一个extra列,其中单元格包含一些不同的值,如keyword='lotsofdata'。这是单元格内容的一个示例: 这将是一句话。 这将是另一个。 eTestTwo='1测试 1其他测试 2个其他测试“ eTestThree='这将是另一个条目' 因此,基本上我需要找到关键字eTestTwo,并从保留换行符的“引号”中取出信息,放入单独的标记中 我想我已经做了一半了。这是我到目前为止的php: $pos = stripos(

我正在使用php从数据库中提取信息,但我遇到了这个问题的绊脚石:

我有一个
extra
列,其中单元格包含一些不同的值,如
keyword='lotsofdata'
。这是单元格内容的一个示例:

这将是一句话。
这将是另一个。
eTestTwo='1测试
1其他测试
2个其他测试“
eTestThree='这将是另一个条目'

因此,基本上我需要找到关键字
eTestTwo
,并从保留换行符的“引号”中取出信息,放入单独的
  • 标记中

    我想我已经做了一半了。这是我到目前为止的php

    $pos = stripos($info['extra'], "eTestTwo='");
    echo substr($info['extra'], $pos + 9 );
    
    但这并不能去除结束引号后的额外信息,也不能帮助我区分要放入自己的
  • 中的每一行:

    1个测试
    1其他测试
    2个其他测试“
    eTestThree='这将是另一个条目'

    我试图实现的最终结果是:

    <li>1 Test</li>
    <li>1 Other Test</li>
    <li>2 Other Tests</li>
    
  • 1测试
  • 1其他测试
  • 2其他测试
  • 编辑:只是澄清一下,单元格可以不按特定顺序包含更多或更少的值。因此,解决方案确实需要依赖于找到关键字eTestTwo,并以某种方式从其引号之间获取信息。

    编辑2:

        $parts = explode("eTestTwo" , $info['extra']);
        $temp = explode("'" ,$parts[1]);
        /*
         temp[0] = "="
         temp[1] = "1 Test
    1 Other Test
    2 Other Tests"
         temp[2] = "...."
        */
        $lines = explode("\r" , $temp[1]);
        unset($temp);
        foreach($lines as $line)
          echo "<li>".$line."</li>";
    
    $parts=explode(“eTestTwo”,$info['extra']);
    $temp=分解(“”,$parts[1]);
    /*
    温度[0]=“=”
    温度[1]=“1测试
    1其他测试
    2其他测试“
    温度[2]=“…”
    */
    $lines=explode(“\r”,$temp[1]);
    未结算($临时);
    foreach($line作为$line)
    回音“
  • ”$line.
  • ”;
    老安瓦尔:

        $parts = explode("=" , $info['extra']);
        /*
        parts[0] = eTestOne
        parts[1] = 'This would be one sentence.
        This would be another.'
        parts[2] = eTestTwo
        parts[3] = '1 Test
        1 Other Test
        2 Other Tests'
        ...
        */
    
        $lines = explode("\n" , $parts[3]);
        foreach($lines as $line)
         echo "<li>".$line."</li>";
    
    //It will work only if there are no '=' chars in the quotes.
    
    $parts=explode(“=”,$info['extra']);
    /*
    零件[0]=1
    第[1]部分将是一句话。
    这将是另一个。”
    第[2]部分=第二部分
    零件[3]='1测试
    1其他测试
    2其他测试'
    ...
    */
    $lines=分解(“\n”,$parts[3]);
    foreach($line作为$line)
    回音“
  • ”$line.
  • ”; //只有在引号中没有“=”字符时,它才会起作用。
    为什么选择这种方法?“eTestXXX”代表什么?我没有选择这个方法。这是一个预先存在的数据库,我需要这些信息
    eTestXXX
    只是一个关键字,指的是引号中包含的任何信息,例如详细信息、摘要、id等。谢谢。但不幸的是,这导致了其他问题:我只知道关键字
    eTestTwo
    ,不知道它是数组中的哪个数字,因为单元格中可能有更多或更少的条目。另一个问题是:当
    $lines=explode
    foreach
    的结果被回显时,它似乎不会保留新行并将其全部放在一个
  • 中,并且周围的引号仍然存在。编辑:将
    \n
    替换为
    \r
    解决了新行问题。请尝试一下我的新答案(已编辑)我还没有尝试过这个,但问题是我不知道什么是
    eTestThree
    。它是一个列,在该列中,单元格可以填充各种各样的值,而无需设置顺序。我只知道我正在搜索的关键字
    eTestTwo
    。再次编辑了我的答案,现在不管你是否有eTestTwo。谢谢你的帮助,很抱歉延迟接受你的答案。它工作得很好,不过我确实需要稍微玩玩一下
    \n
    \r
    ,才能让它正常工作,而且我还对它做了一些修改,这样它就不会吐出一行空白的
    $line