如何使用php在字符串中查找字符串

问题描述

| 我正在访问MysqL数据库显示一列。在此列中是一个长字符串,可以这样说:
<image identifier=\"540aa2ad-9a8d-454d-b915-605b884e76d5\">
  <file><![CDATA[images/MV5BMTg5OTMxNzk4Nl5BMl5BanBnXkFtZTcwOTk1MjAwNQ@@._V1._SY317_CR0,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\";
}  
    

解决方法

        
$cdata_part = preg_quote(\'<![CDATA[images/\');
$end_part = preg_quote(\'.jpg]]></file>\');

if (preg_match(\"#{$cdata_part}(.+?){$end_part}#\",$text,$matches)) {
    echo $matches[1];
}
    ,        如果您有XML,那么这很容易:
<?php
$xml = <<<END
<image identifier=\"540aa2ad-9a8d-454d-b915-605b884e76d5\">
  <file><![CDATA[images/MV5BMTg5OTMxNzk4Nl5BMl5BanBnXkFtZTcwOTk1MjAwNQ@@._V1._SY317_CR0,214,317_.jpg]]></file>
  <title/>
  <link/>
</image>
END;

$file = (string) simplexml_load_string($xml)->file;

echo $file;
如果您仅向我们提供了部分文本斑点,则可能需要稍微调整simplexml \“ path \”。您听起来像XML中有多个图像,但是由于我不知道它的形成,所以我无法真正告诉您如何对其进行迭代。 哦,这也将返回.jpg部分,但是如果您知道扩展名是.jpg,则删除扩展名就像
substr($file,-4)
一样简单。