我正在访问一个mysql数据库并显示一列。在这一列中是一个长字符串,让我们说:
<image identifier="540aa2ad-9a8d-454d-b915-605b884e76d5">
<file><![CDATA[images/MV5BMTg5OTMxNzk4Nl5BMl5BanBnXkFtZTcwOTk1MjAwNQ@@._V1._SY317_CR0,0,214,317_.jpg]]></file>
<title/>
<link/>
<![CDATA[images/
和.jpg]]></file>
之间的任何谎言都会在每一行上发生变化,我想回应它们之间的任何谎言。
感谢
修改
到目前为止,我有:function inStr ($needle, $haystack)
{
$needlechars = strlen($needle); //gets the number of characters in our needle
$i = 0;
for($i=0; $i < strlen($haystack); $i++) //creates a loop for the number of characters in our haystack
{
if(substr($haystack, $i, $needlechars) == $needle) //checks to see if the needle is in this segment of the haystack
{
return TRUE; //if it is return true
}
}
return FALSE; //if not, return false
}
$img = '
SELECT *
FROM `item`
';
$result0 = mysql_query($img);
while ($row0 = mysql_fetch_array($result0)){
$haystack = $row0['elements'];
$needle = '<![CDATA[images/';
}
if(inStr($needle, $haystack))
{
echo "string is present";
}
答案 0 :(得分:1)
$cdata_part = preg_quote('<![CDATA[images/');
$end_part = preg_quote('.jpg]]></file>');
if (preg_match("#{$cdata_part}(.+?){$end_part}#", $text, $matches)) {
echo $matches[1];
}
答案 1 :(得分:0)
如果您有XML,那么很容易:
<?php
$xml = <<<END
<image identifier="540aa2ad-9a8d-454d-b915-605b884e76d5">
<file><![CDATA[images/MV5BMTg5OTMxNzk4Nl5BMl5BanBnXkFtZTcwOTk1MjAwNQ@@._V1._SY317_CR0,0,214,317_.jpg]]></file>
<title/>
<link/>
</image>
END;
$file = (string) simplexml_load_string($xml)->file;
echo $file;
如果您只向我们提供了部分文本blob,则可能需要稍微调整simplexml“path”。你听起来好像XML中有几个图像,但由于我不知道它已形成,我无法告诉你如何迭代它。
哦,这也将返回.jpg部分,但如果您知道它是.jpg,则删除扩展程序就像substr($file, 0, -4)
一样简单。