Вопрос

У меня есть длинная строка, которая может одновременно удерживать все эти значения:

hello<!>how are you? <!>I am fine<!> What is up? <!> Nothing!

Мне нужно найти все эти позиции:

' <!> '
' <!>'
'<!> '
'<!>'

И заменить их " n"

Можно ли достичь с помощью str_replace в PHP?

Это было полезно?

Решение

Если у вас есть только эти 4 возможности, да, то вы можете сделать это с str_replace.

$str = str_replace( array( ' <!> ', ' <!>', '<!> ', '<!>' ), "\n", $str );

Да, но что, если есть два места? Или вкладка? Вы добавляете космический корпус для каждого?

Вы можете либо добавить специальные случаи для каждого из них, либо использовать регулярные выражения:

$str = preg_replace( '/\s*<!>\s*/', "\n", $str );

Другие советы

Конечно, вы можете достичь этого с 4 звонками str_replace. Редактировать: Я был неправ. Вы можете использовать массивы в str_replace.

$str = str_replace(' <!> ', "\n", $str);
$str = str_replace(' <!>',  "\n", $str);
$str = str_replace('<!> ',  "\n", $str);
$str = str_replace('<!>',   "\n", $str);

Также рассмотрите возможность использования strtr, это позволяет сделать это за один шаг.

$str = strtr($str, array(
    ' <!> ' => "\n",
    ' <!>'  => "\n",
    '<!> '  => "\n",
    '<!>'   => "\n"
));

Или вы можете использовать регулярное выражение

$str = preg_replace('/ ?<!> ?/', "\n", $str);

Вы, безусловно, можете сделать это с Str_replace, как это:

$needles = array(" <!> ","<!> "," <!>","<!>");
$result = str_replace($needles,"\n",$text);

Ты не можешь сделать это с str_replace. Анкет Либо использовать комбинацию explode, strip а также implode, или пользователь preg_replace.

Редактировать: preg_replace('/\s*<!>\s*', PHP_EOL, $string); должен быть лучше.

Конечно, str_replace('<!>', "\n", $string); Если ваш пример завершен.

Вы можете использовать:

//get lines in array
$lines = explode("<!>", $string);
//remove each lines' whitesapce
for(i=0; $i<sizeof($lines); $i++){
    trim($lines[$i]);
}
//put it into one string
$string = implode("\n", $lines)

Это немного утомительно, но это должно работать (также удаляет два пространства и вкладки). (не проверял код, поэтому могут быть ошибки)

Это довольно аккуратно:

$array = explode('<!>', $inputstring);
foreach($array as &$stringpart) {
  $stringpart = trim($stringpart);
}
$outputstring = implode("\r\n", $array);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top