正则表达式PHP删除某些关键字

时间:2010-07-29 14:15:33

标签: php regex

在stackoverflow上查看一些答案后,

preg_match_all('/<img[^>]+>/i',$html, $result);
$img = array();
foreach( $result[0] as $img_tag)
{
    preg_match_all('/(title)=("[^"]*")/i',$img_tag, $img[$img_tag]);
}

//print_r($img);
foreach ($img as $imgg)
 echo $imgg[2][0];

上面的代码找到了img标题,但是它返回"Waterfall fountain"而不是Waterfall fountain,请注意"

我应该在正则表达式中添加什么才能删除"

谢谢

6 个答案:

答案 0 :(得分:3)

只需将"移出捕获组:

'/(title)="([^"]*)"/i'

答案 1 :(得分:1)

将引号移到括号外

preg_match_all('/(title)="([^"]*)"/i',$img_tag, $img[$img_tag]); 

答案 2 :(得分:1)

将引号移到括号外。

检查一下:

preg_match_all('/(title)="([^"]*)"/i',$img_tag, $img[$img_tag]); 

答案 3 :(得分:1)

使用XML Parser和此XPath获取img元素的所有标题:

//img/@title

DOM

的示例
$dom = new DOMDocument;
$dom->loadHML($html);
$xp = new DOMXPath($dom);
foreach($xp->query('//img/@title') as $attribute) {
    echo $attribute->nodeValue;
}

进一步阅读:

答案 4 :(得分:0)

目前,您正在记住所有匹配的"部分。您可以将引号括在括号外:

preg_match_all('/(title)="([^"]*)"/i',$img_tag, $img[$img_tag]);

答案 5 :(得分:0)

正则表达式中的括号构成一个捕获组,它控制存储在$img[$img_tag]中的内容。您的论坛中包含引号:("[^"]*")。如果您不想要引号,只需将它们移到组外:"([^"]*)"