一个数组字符串中的多个匹配

时间:2016-11-20 10:18:38

标签: php arrays regex

我正在尝试匹配^Description^*http://google.com*并转换为网址。它正在使用JS,但我不知道如何将它实现到PHP Array中。 我的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);

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

要匹配PHP中的常规渐进^Description^*http://google.com*,您可以使用/ s修饰符(如here所述)而不是正则表达式中间的^。我测试了代码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;