在php中使用正则表达式提取字符串的两个部分

时间:2012-12-09 02:32:30

标签: php regex

我有这个字符串:

  <img src=images/imagename.gif alt='descriptive text here'>

我试图把它分成以下两个字符串(两个字符串的数组,什么都有,只是分解)。

  imagename.gif
  descriptive text here

请注意,是的,它实际上是&lt;而不是<。与字符串的结尾相同。

我知道正则表达式就是答案,但我对正则表达式不够好,不知道如何在PHP中实现它。

2 个答案:

答案 0 :(得分:2)

试试这个:

<?php

$s="&lt;img src=images/imagename.gif alt='descriptive text here'&gt;";

preg_match("/^[^\/]+\/([^ ]+)[^']+'([^']+)/", $s, $a);

print_r($a);

输出:

Array
(
    [0] => &lt;img src=images/imagename.gif alt='descriptive text here
    [1] => imagename.gif
    [2] => descriptive text here
)

答案 1 :(得分:2)

更好地使用DOM xpath rather than regex

<?php
$your_string = html_entity_decode("&lt;img src=images/imagename.gif alt='descriptive text here'&gt;");
$dom = new DOMDocument;
$dom->loadHTML($your_string);
$x = new DOMXPath($dom); 

foreach($x->query("//img") as $node) 
{
    echo $node->getAttribute("src");
    echo $node->getAttribute("alt");
}

?>