用PHP提取部分字符串[重复]

Posted

技术标签:

【中文标题】用PHP提取部分字符串[重复]【英文标题】:Extract part of string with PHP [duplicate] 【发布时间】:2012-03-28 22:12:13 【问题描述】:

可能重复:How to extract img src, title and alt from html using php?

这将是一个字符串的例子:

$src = '<img src="/avatars/admin.jpg" class="avatar 23 avatar-30 avatar-default"   style="width: 30px; height: 30px;" >';

$out 应该是/avatars/admin.jpg

问题是/avatars/admin.jpg是当前登录用户头像的路径,所以它是动态变化的。

如何以最简单的方式获取$out

【问题讨论】:

我是 PHP 菜鸟,我只知道如何使用 jQuery .attr() 做到这一点,但这是一个糟糕的解决方案。我会很感激只是指导,开始的地方。 @enloz 你可以按照亚历克斯所说的去做。在http://***.com/questions/138313/how-to-extract-img-src-title-and-alt-from-html-using-php 之前也问过同样的问题 【参考方案1】:

好吧,如果这是您需要处理的唯一 HTML,那么您可能会使用正则表达式...

preg_match('/\s-s-rc="([^"]+)"/', $src, $matches);

【讨论】:

【参考方案2】:

看看http://php.net/manual/de/function.substr.php 和http://php.net/manual/de/function.strpos.php

您可以将两者结合使用,例如 substr( $string, strpos('src="') + 5, strpos('.jpg') + 4 );

我没试过,因为我真的不知道你想“提取”什么,但现在你明白了基本的想法;)

g.r.

【讨论】:

【参考方案3】:

您可以将字符串设置为:

$str = '&lt;img src="/avatars/$avatar.jpg" class="avatar 23 avatar-30 avatar-default" height="30" width="30" style="width: 30px; height: 30px;" alt="avatar"&gt;';

否则,我会使用str_replace

【讨论】:

【参考方案4】:

使用这个

function get_string_between($string, $start, $end)
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0) return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);


$fullstring = "$src = '<img src="/avatars/admin.jpg" class="avatar 23 avatar-30 avatar-default"   style="width: 30px; height: 30px;" >';
";
$parsed = get_string_between($fullstring, "<img src=", " class=");

echo $parsed; //

谢谢

【讨论】:

【参考方案5】:

试试这样的。

<?php
$src = '<img src="/avatars/admin.jpg" class="avatar 23 avatar-30 avatar-default"   style="width: 30px; height: 30px;" >';
$regex = '|src="(.+?)"|';
preg_match($regex,$src,$match);
$out = $match[1];
?>

【讨论】:

【参考方案6】:

只使用substr 和strpos

$src = '<img src="/avatars/admin.jpg" class="avatar 23 avatar-30 avatar-default" \
  style="width: 30px; height: 30px;" >';

$start = strpos($src, '"') + 1;
$end = $start + strpos($src, '"', $start - 1) - 1;
echo substr($src, $start, $end);

【讨论】:

以上是关于用PHP提取部分字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

提取遵循R中模式的字符串部分[重复]

如何使用php提取所有IP地址[重复]

PHP:从 XML 字符串中提取数据并添加到数组

从Javascript中的URL中提取一部分[重复]

如何在两个分隔符之间提取字符串[重复]

中文字符部分用*号代替