Войти

Показать полную графическую версию : Регулярки PHP


salat
31-08-2014, 08:30
Помогите с preg_replace. Задолбался уже конкретно. Весь мануал излистал, чет все равно не получается.
В одну сторону составил, в обратную ни в какую.


<img src="$1" style="max-width: 780px;"/>
<div id="center">$1</div>
<a href="http://href.li/?$1" target="blank">$1</a>
<iframe width="780" height="450" src="//www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>
<strong>$1</strong>

Заменить соответственно на:

$1
$1
$1
$1
$1

Заранее большое спасибо. Крайне не желаю повторного закипания мозга... -_-

mrcnn
19-09-2014, 14:40
$d1='<img src="$1" style="max-width: 780px;"/>';
$d2='<div id="center">$1</div>';
$d3='<a href="http://href.li/?$1" target="blank">$1</a>';
$d4='<iframe width="780" height="450" src="//www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>';
$d5='<strong>$1</strong>';

preg_replace('<img.*?"(.*?)".*?>', '$1', $d1);
preg_replace('<div.*?"(.*?)">(.*?)<.*', '[$1]$2[/$1]', $d2);
preg_replace('<a href.*?>(.*?)<.*', '$1',$d3);
preg_replace('<iframe.*?embed/(.*?)".*?>', '$1', $d4);
preg_replace('<strong>(.*?)</(.*?)>/', '[$2]$1[/$2]', $d5);



Пример. Работает или нет, не проверял

salat
20-09-2014, 06:11
mrcnn, ЖеСть АцКаЯ! xD Испугался когда увидел, но все равно спасибо за попытку помочь :)

Правильный ответ:

$replace = array(
'~<u>(.*?)</u>~is' => '\1',
'~<i>(.*?)</i>~is' => '\1',
'~<strong>(.*?)</strong>~is' => '\1',
'~<img\s[^>]*\bsrc="([^"]+)".*?/>~is' => '\1',
'~<a\s[^>]*\bhref="href.li/\?([^"]+)".*?</a>~is' => 'http://\1',
'~<iframe\s[^>]*\bsrc=".*youtube.com/embed/?([^"]+)".*?</iframe>~is' => 'http://www.youtube.com/watch?v=\1',
'~<div\s+id="center">(.*?)</div>~is' => '\1',
);

$out = preg_replace(array_keys($replace), array_values($replace), $in);




© OSzone.net 2001-2012