PHP str_replace со смещением

#php #offset #str-replace

#php #смещение #str-заменить

Вопрос:

У меня есть следующий вывод:

 Item
Length : 130
Depth : 25
Total Area (sq cm): 3250
Wood Finish: Beech
Etc: etc
  

Я хочу удалить общую площадь (кв. см): и 4 цифры после нее из строки, в настоящее время я пытаюсь использовать str_replace следующим образом:

 $tidy_str = str_replace( $totalarea, "", $tidy_str);
  

Правильно ли использовать эту функцию, и если да, то как я могу включить 4 случайные цифры после этого текста? Пожалуйста, также обратите внимание, что это не заданный вывод, поэтому строка изменит позицию внутри этого.

Комментарии:

1. preg_replace php.net/manual/en/function.preg-replace.php

Ответ №1:

Вы можете практиковать регулярное выражение php в http://www.phpliveregex.com /

 <?php

$str = '
Item
Length : 130
Depth : 25
Total Area (sq cm): 3250
Wood Finish: Beech
Etc: etc
';

echo preg_replace("/Total Area (sq cm): [0-9]*\n/", "", $str);
  
 Item
Length : 130
Depth : 25
Wood Finish: Beech
Etc: etc
  

Комментарии:

1. Я думаю, что с точки зрения производительности предложение hlscalon ( substr_replace ) предпочтительнее по сравнению с preg_replace

Ответ №2:

Вы ищете substr_replace :

 $strToSearch = "Total Area (sq cm):";
$totalAreaIndex = strpos($tidy_str, $strToSearch);
echo substr_replace($tidy_str, '', $totalAreaIndex, strlen($strToSearch)   5); // 5 = space plus 4 numbers.
  

Если вы также хотите удалить новую строку, вам следует проверить, является ли она n или rn. n добавьте единицу, rn добавьте две к смещению. Ie. strlen($strToSearch) 7

Ответ №3:

Это сделает это.

 $exp = '/(sq cm): d /';


echo preg_replace($exp, '', $array);
  

Ответ №4:

Попробуйте с этим:

   preg_replace('/(Total Area (sq cm): )([0-9.,]*)/' , '', $tidy_str);