Как разделить между строкой в ​​PHP?

У меня есть следующая строка в текстовом файле:

^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];