Php str_replace не работает - PullRequest
1 голос
/ 07 марта 2011

у меня есть длинная строка, разделенная пробелами (считывается из текстового файла)

Строка ввода:

$value = "TestNumber1  X Chan 1 Wrap Hi (5.0 V) (UNC)    9.860           V        GELE (>= <=) 9.750           10.250          Passed"

То, что я хочу сделать, и успешно сделал, это разобрать эту строку в массив, используя:

$Exploded = explode("  ",$value);

К сожалению, я также хочу разделить часть GELE (> = <=) и следующее число (в данном случае 9.750), поэтому я решил сделать это проще, прежде чем взорвать строку, которую я сделаю : </p>

$value = str_replace("GELE (>= <=) ","GELE (>= <=)  ",$value);

Проблема в том, что по какой-то причине замена не работает. Как будто он не видит иглу. Это то, что мне дает мой разобранный массив строк после выполнения str_replace.

Array ( [0] => TestNumber1 X Chan 1 Wrap Hi (5.0 V) (UNC) [1] => 9.860 [2] => V [3] => GELE (>= <=) 9.750 [4] => 10.250 [5] => Passed [6] => ) 

Как видите, элемент [3] => GELE (> = <=) 9.750 </p>

Есть ли что-нибудь глупое, что я делаю здесь, чтобы моя функция str_replace не работала?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 07 марта 2011

попробовать:

preg_replace('/GELE\s*?\(>= <=\)(\s+)[0-9\.]*/', '  ', $value);
0 голосов
/ 07 марта 2011

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

Если вы хотите извлечь числа типа «9.860», «9.750» и «10.250», например:

<code>$iReg = preg_match("/^.*UNC\)[\s|\t]*([0-9\.]*).*<=\)[\s|\t]*([0-9\.]*)[\s|\t]*([0-9\.]*)[\s|\t]*(.*)/i", $sData, $aData);

echo "<p>iReg :".$iReg."</p>";
echo "<p><pre>".print_r($aData, true)."
";

Этот код возвращает этот результат:

Array
(
    [0] => TestNumber1  X Chan 1 Wrap Hi (5.0 V) (UNC)    9.860           V        GELE (>= <=) 9.750           10.250          Passed
    [1] => 9.860
    [2] => 9.750
    [3] => 10.250
    [4] => Passed
)

Надеюсь, что это поможет вам ...

Ака

0 голосов
/ 07 марта 2011

Пробел после строки может быть символом табуляции, а не пробелами.

Попробуйте сначала заменить вкладки \t пробелами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...