Я работаю над некоторым кодом, и я сделал достаточно работы, чтобы что-то сделать. Я хочу заменить URL-адрес изображения и веб-ссылки внутри этого текста.Php preg_match и preg_replace текст с url и тегами изображения
EG «Это мой текст с http://www.google.com и некоторые изображения http://www.somewebimage.png»
Заменить на «Это мой текст с <a href="http://www.google.com">http://www.google.com</a>
и некоторые изображения <img src="http://www.somewebimage.png">
»
Мой хак получает меня заменить URL (s) или IMG ссылки, но не both..one будет перезаписана из-за того,
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
$reg_exImg = '/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?(jpg|png|gif|jpeg)/';
$post = "This is my text with http://www.google.com and some image http://www.somewebimage.png";
if(preg_match($reg_exImg, $post, $img)) {
$img_post = preg_replace($reg_exImg, "<img src=".$img[0]." width='300' style='float: right;'> ", $post);
} else {
$img_post = $post;
}
if(preg_match($reg_exUrl, $post, $url)) {
$img_post = preg_replace($reg_exUrl, "<a href=".$url[0]." target='_blank'>{$url[0]}</a> ", $post);
} else {
$img_post = $post;
}
Если я заблокировать блок кода $ reg_exUrl я получаю ссылку на изображение, если оно бежит я получаю ссылку URL.
Что я пытаюсь сделать, это просто корм, где URLs ссылки и IMG URLs встраиваются .. –
Первое, тестирование модели с 'preg_match' перед использованием его с' preg_replace' бесполезен. –
Вы должны использовать один шаблон для двух случаев, а затем выбрать заменяющую маску с помощью 'preg_replace_callback'. Таким образом, все делается за один проход, и ничего не перезаписывается. В функции обратного вызова вы можете использовать 'parse_url' и' explode', чтобы легко извлечь расширение файла. –