2016-01-29 5 views
-3

У меня есть строка вроде: He *is* хороший мальчик. Как *are* вы. Затем я хочу заменить и с типом ввода текстовое поле означает замену вещей между звездочками (*). Как я могу получить это, пожалуйста, помогите мне.Заменить строку между двумя символами (специальный символ) в php

+0

Этот вопрос не показывает каких-либо исследовательских усилий. -1 – akasummer

+0

У меня меньше знаний о preg_replace. –

+0

Уважаемый путник, позвольте мне, почему вы меняете вниз. –

ответ

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

+0

Работает отлично. Спасибо друг. Но preg_replace_callback эта функция не работает в моем файле, который я заменяю preg_replace. –

+0

Это меня удивляет - функция _preg \ _replace \ _callback_ существует со времен PHP версии 4. Но я рад, что вы нашли решение, которое работает на вас. – hherger

1

попробовать это,

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

В моем вопросе есть и есть пример. Я хочу заменить строку между asterix. @rogin thomas –

+0

Я отредактировал его. вы можете попробовать это –

+0

Он заменяет только один. –

0

Использование preg_replace(); например:

<?php 

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

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

Урожайность:

он был хорошим мальчиком

+0

Упрощенный для использования шаблона, который будет соответствовать любому типу между звездочками! – Math

+0

Если он * является хорошим мальчиком, он не будет работать. @Darragh Enright –

0

Try таким образом:

$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 
); 
Смежные вопросы