“将此视为示例并从此字符串中提取图像名称”(此部分也包含在问题中。“
<img src='http://www.example.com/Imagename.jpg' height='400px' width='600px'>
-------&GT; 处理上面提供的材料以及句子......我有字符串和标签的组合......我想从所有这些东西中只提取文件名。
怎么做?
答案 0 :(得分:0)
您可以使用简单的正则表达式从字符串中获取,或使用SimpleXMLElement
<?php
$input = "<img src='http://www.example.com/Imagename.jpg' height='400px' width='600px' />";
$element= new SimpleXMLElement($input);
var_dump(basename((string) $element->attributes()->src));
将输出所需的结果:string 'Imagename.jpg' (length=13)
使用正则表达式的示例(我建议使用像我发布的那样使用DOM或SimpleXMLElement),但是,如果你想要一个更简单的方法,比如使用简单的正则表达式,你可以这样做:
<?php
preg_match("/src='(?P<url>([^']*?))'/", $input, $matches);
$filename = isset($matches['url']) ? basename($matches['url']) : null;
var_dump($filename);
它将产生相同的输出。
如果您想要废弃所有HTML,那么这是一个完整的示例,您可以这样做:
<?php
$html = <<<HTML
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
</head>
<body>
lalala
<img src='http://www.example.com/Imagename.jpg' height='400px' width='600px' />
</body>
</html>
HTML;
function withEachImage ($html, callable $callback) {
libxml_use_internal_errors(true);
$document = new DOMDocument();
$document->loadHTML($html);
foreach ($document->getElementsByTagName('img') as $img) {
call_user_func_array($callback, array($img->getAttribute('src')));
}
}
withEachImage($html, function ($src) {
echo basename($src);
});
答案 1 :(得分:0)
有很多方法可以做到这一点,假设图像文件名可以改变,或者你可以在“和”之间交替,这就是我要做的事情;
function getFileName($myImage){
$myArray = explode(" ",$myImage);
$subArray = explode("/",$myArray[1]);
return substr($subArray[count($subArray)-1],0,-1);
}
$source = "<img src='http://www.example.com/Imagename.jpg' height='400px' width='600px'>";
$myImg = getFileName($source);
print $myImg;
代码已经过测试并且有效
输出:Imagename.jpg
你甚至可以检查'src',所以它与参数的顺序无关:
function getFileName($myImage){
$myArray = explode(" ",$myImage);
$useKey = 0;
foreach($myArray as $key => $value){
if(substr($value,0,3)=="src"){
$useKey = $key;
}
}
$subArray = explode("/",$myArray[$useKey]);
return substr($subArray[count($subArray)-1],0,-1);
}
$source = "<img height='400px' src='http://www.example.com/Imagename.jpg' width='600px'>";
$myImg = getFileName($source);
print $myImg;