2016-11-20 3 views
0

Я пытаюсь сопоставить ^Description^*http://google.com* и конвертировать в URL. Он работает с JS, но я не знаю, как реализовать это в PHP-массиве. My JS выглядит следующим образом:Несколько совпадений в одной строке массива

var that = $(this); 
    var vid = that.html().match(/\^(.*)\^/gm); 
    var vid2 = that.html().match(/\*(.*)\*/gm); 
    var vid2 = jQuery.trim(vid2).slice(1,-1); 
    var vid1 = jQuery.trim(vid).slice(1,-1); 
    that.html(function(i, h) { 
     return h.replace(/\^(.*)\^\*(.*)\*/gm, '<a target="_blank" href="'+vid2+'">'+vid1+'</a>'); 
    }); 

И мой PHP массив:

$find = array('/\*\*([^*]+)\*\*/', '/@(\\w+)/'); 
$replace = array('<span style="font-weight:bold">$1</span>', '<a href=/profile/$1>@$1</a>'); 
$result = preg_replace($find, $replace, $comment_text); 

ответ

0

я сделал с этим :)

$find = array('/\*\*([^*]+)\*\*/', '/@(\\w+)/', '/\^(.*)\^\*(.*)\*/'); 
$replace = array('<span style="font-weight:bold">$1</span>', '<a href=/profile/$1>@$1</a>','<a target="_blank" href="$2">$1</a>'); 
$result = preg_replace($find, $replace, $comment_text); 
0

Чтобы соответствовать регулярному experession ^Description^*http://google.com* в PHP вас может использовать модификатор/s (как описано here) вместо^в середине Regex. Я проверил код here.

<?php 
$find = array('/^Description.*\*(.*)\*/s'); 
$replace = array('<a href="$1">$1</a>'); 
$comment_text = 'Description 
*http://google.de*'; 
$result = preg_replace($find, $replace, $comment_text); 
echo $result; 
Смежные вопросы