2011-06-11 3 views
0

J'accède à une base de données mysql et affiche une colonne. dans cette colonne est une longue chaîne permet de dire que son ceci:comment trouver une chaîne dans une chaîne en utilisant php

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

tout ce qui se trouve entre <![CDATA[images/ et .jpg]]></file> changera tous les rangs et je veux faire écho à tout ce qui se trouve entre les morceaux de code.

quelqu'un vous aide?

grâce

modifier

jusqu'à présent i ont:

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()'. –

+0

Si le contenu qui enveloppe ce que vous recherchez est cohérent, substr avec strpos est probablement meilleur. – ldg

+0

s'il vous plaît pouvez-vous donner un exemple, j'ai déjà utilisé strpos avant. – reece

Répondre

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

Si vous avez XML, il est facile:

<?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; 

Vous devrez peut-être ajuster le simplexml "chemin" un peu si vous sur nous a fourni un blob de texte partiel. Vous donnez l'impression qu'il y a plusieurs images dans le fichier XML, mais comme je ne sais pas s'il est formé, je ne peux pas vraiment vous dire comment l'itérer.

Oh, et cela retournera la partie .jpg aussi, mais la suppression d'une extension est aussi simple que substr($file, 0, -4) si vous le connaissez est .jpg.

Questions connexes