У меня есть следующая строка в текстовом файле:
^b^B
Я пытаюсь разбить это на две переменные. Мой текущий код использует explode()
но он не работает так, как я хочу:
$num1 = '^b'; $num2 = '^B';
Как я могу выполнить это с помощью PHP?
ЭТО МОЙ КОД
<?php if(isset($_POST['refresh'])) { exec('/var/www/www.rfteste.com/htdocs/estado.sh'); } if(isset($_POST['on'])) { exec('/var/www/www.rfteste.com/htdocs/on.sh'); } if(isset($_POST['off'])) { exec('/var/www/www.rfteste.com/htdocs/off.sh'); } echo "<H3>CONTROL PANEL</H3>"; $str = file_get_contents("/var/www/www.rfteste.com/htdocs/refresh.txt"); $vals = explode("^", $str); $num1 = "^".$vals[0]; $num2 = "^".$vals[1]; $onoff= "^A"; if($num2 == $onoff) echo "<b>on</b>"; else echo "<b>off</b>"; ?> <html> <body> <form method="post" action=""> <p> <center><input type="submit" value="on" name="on""';" /></center> <center><input type="submit" value="off" name="off""';" /></center> <center><input type="submit" value="refresh" name="refresh""';" /></center>
Используйте preg_split()
с утверждением поиска:
list($num1, $num2) = preg_split('/(?<=\^b)/', $str);
Вскрытие:
/
– начальный разделитель (?<=
– начало положительного lookbehind (что означает «если предшествует»)
\^b
– сопоставить буквенные символы ^b
)
– конец положительного lookbehind /
– конечный разделитель Визуализация:
В простом английском языке это означает: разделение на места, где ему предшествует a ^b
и присваивать значения массива переменным $num1
и $num2
с использованием конструкции list
.
демонстрация
Используйте preg_match_all () :
<?php $str = '^b^B'; preg_match_all('/(\^.)/', $str, $matches); var_dump($matches);
#Pull all of the contents of file, myfile.txt, into variable, $str $str = file_get_contents("myfile.txt"); #split up the data in $str, at every instance of '^'. $vals = explode("^", $str); #now $vals is an array of strings #concatenate the "^" back into the strings as they were removed by explode. $num1 = "^".$vals[0]; $num2 = "^".$vals[1];