-1

我已经处理了一段时间,但我无法弄清楚如何在 PHP 中执行以下操作:

$string = "this is test <pre>somrthing in <p>pharagraph</p></pre> dont know tell me <pre>value33 kooo ok</pre> this is php regress <pre>teeth value</pre> ok how"; 

function get_innercode($string) {
preg_match_all("#<pre>(.*?)</pre>#", $string, $foo); 
echo implode("\n", $foo[1]); 
}
    $insert1=get_innercode($string);



    $insert2=" 2 place me in the pre tag"; // you can ignore this

    $string="this is test  <pre> WHERE $insert1 SHOULD BE</pre> dont know tell me  <pre>WHERE $insert2 SHOULD BE</pre> ok how ";

我怎样才能做到这一点?请注意我不能

$string="some text here <pre> WHERE $insert1 SHOULD BE</pre> some more text here <pre>WHERE $insert2 SHOULD BE</pre> ok how";

因为我从 $string 获取 $insert1 和 $insert2 来修改。我需要把它放回它们来自的地方。谢谢你

4

4 回答 4

3

这很容易做到:

$insert1 =" 1 place me in the pre tag";
$insert2 =" 2 place me in the pre tag";

$string = "some text here <pre>{$insert1}</pre> some more text here <pre>{$insert2}</pre> and may be some more text or ";

当变量被双引号括起来时,您可以从字符串内部回显变量。这不适用于单引号。

编辑:这可能是您正在寻找的内容:

$string = "This my <code>awesome</code> code";

$string = preg_replace('/<code>(.*?)<\/code>/', '<pre>$1</pre>', $string);
于 2013-07-19T21:42:27.353 回答
1

在 php 中,您可以使用“。”连接字符串。之前和之后,例如:

$var1 = "hello";
$var2 = "What's up";

$concat = "Hey, ".$var1." ,".$var2."<br>";

echo $concat; 
于 2013-07-19T21:45:34.647 回答
0

类似的方法在这里。这允许填充更大的区域

$insert[0] = "Some Text";
$insert[1] = "Some More Text";

function Parser($content){
$i = 0;
    while (preg_match_all('`\<pre\>(.*?)\</pre\>`', $content, $matches)) {
       foreach ($matches[0] as $key => $match) { 
         //$innertext = $matches[1][$key]; //replace with your preferred filler
         $innertext = $insert[$i]; //such as this
         $replacement = '<pre>' . trim($innertext) . '</pre>';
         $content = str_replace($match, $replacement, $content); 
         $i++;
       }
    }
}

像这样解析您的内容行:

Parser("this is test <pre> WHERE $insert1 SHOULD BE</pre> dont know tell me  <pre>WHERE $insert2 SHOULD BE</pre> ok how");

这是未经测试的,因此可能有几个错误。

于 2013-07-19T23:12:07.433 回答
0

尝试这个,

我在每个 pre 内容之前添加 div 标签。您还可以根据需要使用 $matches[1] 修改内容

$string_new = preg_replace_callback(
   '#<pre>(.*?)</pre>#',
    function ($matches) {
        return "<div>".$matches[0]."</div>";
    },
    $string
);

echo $string_new;
于 2013-07-20T08:19:08.743 回答