2011-06-11 430 views
0

我正在訪問mysql數據庫並顯示一列。在此列是一個很長的字符串可以說其是:如何在字符串中使用php查找字符串

<image identifier="540aa2ad-9a8d-454d-b915-605b884e76d5"> 
    <file><![CDATA[images/[email protected]@._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

'preg_match()'。 – 2011-06-11 17:10:55

+0

如果你想要搜索的東西是一致的,那麼帶strpos的substr可能會更好。 – ldg 2011-06-11 17:13:19

+0

請你舉個例子,我曾經使用過strpos。 – reece 2011-06-11 17:14:26

回答

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]; 
} 
0

如果你有XML,那麼很容易:

<?php 
$xml = <<<END 
<image identifier="540aa2ad-9a8d-454d-b915-605b884e76d5"> 
    <file><![CDATA[images/[email protected]@._V1._SY317_CR0,0,214,317_.jpg]]></file> 
    <title/> 
    <link/> 
</image> 
END; 

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

echo $file; 

您可能需要調整如果你使用simplexml「路徑」向我們提供了部分文本塊。你聽起來像XML中有幾個圖像,但因爲我不知道它形成了,我不能告訴你如何迭代它。

哦,這也會返回.jpg部分,但是如果您知道它是.jpg,刪除擴展就像substr($file, 0, -4)一樣簡單。