2016-01-06 4 views
1

У меня есть система блога, где пользователь вводит URL-адрес изображения в содержание поста, какзаменить ширину изображения при вставке в БД

hey how are you <img src="example.com/image.png" style="width: 952px;"> 

если пользователь написал как этот

hello how are you <img src="example.com/image.png" style="width: 952px;"> 

Тогда я хочу найти эту stylewidth952px линии и заменить его в 100%

пользователь может ввести любой размер изображения, как 1 00px 300px вот что я пробовал:

$ содержания, что пользователь отправило

$go = $content; 
    $mystr= $go; 
    $start=strpos($mystr,'style="width: '); 
    $end=strpos($mystr,'">'); 
    $jo = substr($mystr,0,$start+strlen('')) . 'style="width: 100%;' . 
    substr($mystr,$end); 

Проблемы я столкнулся, что если пользователь помещает два или три тега изображений, но этот скрипт только замена одно значение ширины, как заменить несколько ширина

пользователя ВВОДА>

<img src="example.com/img.png" style="width: 500px;"><br><img 
    src="example.com/img2.png" style="width: 952px;"> 

здесь то, что я получил в результате

<img src="example.com/img.png" style="width: 100%;"><br><img 
    src="example.com/img2.png" style="width: 952px;"> 

второй did'nt изображение изменено значение ширины

ответ

0

Используйте preg_replace функции:

$go = preg_replace('/style="width:\s*\d+px;/i', 'style="width:100%;', $content); 

Это предполагает, что $ содержания имеет только ваши <img> тегов, в противном случае вы можете испортить другие элементы html.

+0

любым другим способом не испортить другие теги html? что, если я использую , что будет preg_replace для него –

+0

Он будет работать правильно, но если вы скажете ' ...' it wil стать ' ...' слишком –

0

Этот случай идеально подходит для поиска регулярного выражения и заменить. В PHP вы будете использовать preg_replace, документацию, для которой вы можете найти здесь: - http://php.net/manual/en/function.preg-replace.php

0

Просто используйте регулярное выражение с preg_replace(), чтобы заменить ширину в каждом теге img, например.

echo preg_replace("/<img.*?\Kwidth:\s*[^;]*/s", "width:100%", $input); 

Просто exanied мы первые сопрягать все, пока атрибут ширины в теге IMG (<img.*?), а затем сброс матч с \K так мы тогда может соответствовать ширине атрибута (width:\s*[^;]*/) и заменить его width:100%.

+0

Что делать, если ширина изображения меньше 250 пикселей, так есть ли способ изменить ширину изображения только тогда, когда оно превышает 250 пикселей? –

+0

@abhishekverma Да, тогда просто измените '[^;] *' с '(2 [5-9] \ d | [3-9] \ d {2}) px' в конце регулярного выражения – Rizier123

Смежные вопросы