php正则表达式删除不需要的代码

时间:2015-08-01 20:39:14

标签: php regex

我正在使用的编辑器是在写入数据库之前添加了我想通过php删除的无关编码。 代码如下所示:

<img style="width: 250px;" src="files/school-big.jpg" data-cke-saved-src="files/school-big.jpg" alt="">
<img style="width: 250px;" src="files/firemen.jpg" data-cke-saved-src="files/firemen.jpg" alt="">

我需要摆脱的是data-cke-saved-src =“files / image-name”。我对正则表达式的理解是在弱点以下,所以我如何构建一个正则表达式来获取图像名称而不抓住行尾或其他内容? 谢谢你,

3 个答案:

答案 0 :(得分:1)

试试这个:

$data = preg_replace('#\s(data-cke-saved-src)="[^"]+"#', '', $data);

或者在进入PHP之前在jQuery中执行此操作:

$('img').removeAttr('data-cke-saved-src')

答案 1 :(得分:1)

尝试添加并使用此功能:

/*
*I am assuming you get all the data in a single variable.
*/

function remove_data_cke($text) {
    // Get all data-cke-saved-src="..." tags from the html.
    $result = array();
    preg_match_all('|data-cke-saved-src="[^"]*"|U', $text, $result);

    // Replace all occurances with an empty string.
    foreach($result[0] as $data_cke) {
        $text = str_replace($data_cke, '', $text);
    }
    return $text;
}

答案 2 :(得分:1)

您可以使用DOM轻松删除属性:

$doc = new DOMDocument;
@$doc->loadHTML($html); // load the HTML data
foreach ($doc->getElementsByTagName('img') as $img) {
   $img->removeAttribute('data-cke-saved-src');
}