#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);