2015-08-01 2 views
1

Редактор, который я использую, заключается в добавлении постороннего кодирования, которое я хотел бы удалить с помощью php перед записью в базу данных. код выглядит следующим образом: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=""> 

Что мне нужно, чтобы избавиться от это данных CKE сохраняемых-SRC = «/ изображений имен файлов». Мое понимание регулярного выражения где-то ниже слабого, так как я могу создать регулярное выражение, чтобы захватить имя изображения без захвата конца строки или остальной части содержимого? Спасибо любезно,

+0

почему regex? это очень легко удалить с помощью JS –

+0

Не проще ли удалить его с помощью jQuery? '$ ('img'). removeAttr ('data-cke-saved-src')' –

+0

Я просто подумал, что я очищаю вещи с помощью php, я мог бы также сохранить его в этой области. – Scorpa54

ответ

1

Попробуйте это:

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

Или сделать это в JQuery, прежде чем идти в PHP с этим:

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

Я пытался использовать str_replace вместо preg_replace, вот где я ошибся. Спасибо – Scorpa54

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; 
} 
+1

Почему так сложно? Если вы должны сделать это с помощью регулярного выражения, вы можете выполнить всю работу в одном вызове 'preg_replace()' как [другой ответ] (http://stackoverflow.com/a/31766138/20938). –

1

Вы можете использовать DOM, чтобы легко удалить этот атрибут:

$doc = new DOMDocument; 
@$doc->loadHTML($html); // load the HTML data 
foreach ($doc->getElementsByTagName('img') as $img) { 
    $img->removeAttribute('data-cke-saved-src'); 
} 
Смежные вопросы