在php

时间:2016-01-29 11:57:11

标签: php string substring

我有一个字符串:他*is*一个好男孩。 *are*你怎么样?然后我想用输入类型文本框替换 意味着替换星号(*)之间的内容。我怎么能得到这个请帮助我。

4 个答案:

答案 0 :(得分:1)

试试这个,

<?php
$x="hai, *was/is* are you, is this *was* test ";
echo preg_replace("/\*[\w\/]*\*/","",$x);
?>

答案 1 :(得分:1)

<?php
    $buffer = 'He *is* a good boy. How *are* you.';
    echo "Before: $buffer<br />";
    $buffer = preg_replace_callback('/(\*(.*?)\*)/s', 'compute_replacement', $buffer);
    echo "After: $buffer<br />";

    function compute_replacement($groups) {
        // $groups[1]: *item*
        // $groups[2]: item
        return '<input type="text" value="'.$groups[2].'" />';
    }
?>

结果:

enter image description here

答案 2 :(得分:0)

使用preg_replace(); e.g:

<?php

$pattern = '/\*\w+\*/';
$string  = 'he *is* a good boy';
$replacement = 'was';

echo preg_replace($pattern, $replacement, $string);

收率:

  

他是一个好孩子

答案 3 :(得分:0)

尝试这种方式:

$txt = "He *is* a good boy. How *are* you.";
$_GET['one'] = "doesn't";
$_GET['two'] = "think about";

preg_match_all( '{\*[^*]+\*}',$txt,$matches );
$txt = str_replace( $matches[0][0], $_GET['one'], $txt );
$txt = str_replace( $matches[0][1], $_GET['two'], $txt );

echo $txt;

eval.in demo

,或者preg_replace,以这种方式:

$txt = preg_replace
(
    '/^(.*)\*[^*]+\*(.*)\*[^*]+\*(.*)$/',                  # <-- (Edited)
    "\\1{$_GET[one]}\\2{$_GET[two]}\\3", 
    $txt 
);