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