Я до сих пор много узнаю о PHP, и изменение строк меня интересует. Ранее я использовал preg_match для таких вещей, как проверка адреса электронной почты или просто поиск запросов.
Я только что пришел из этого поста Что не так в моем регулярном выражении? и мне было любопытно, почему функция preg_match_all создает 2 строки, 1 с некоторыми символами, а затем с другими желаемый вывод.
Из того, что я понимаю о функции, является то, что она перебирает строковый символ за символом, используя RegEx, чтобы оценить, что с ней делать. Мог ли этот RegEx быть структурирован таким образом, чтобы обойти первую запись массива и просто дать желаемый результат?
и вам не нужно переходить к другой теме
$str = 'text^name1^Jony~text^secondname1^Smith~text^email1^example-
free@wpdevelop.com~';
preg_match_all('/\^([^^]*?)\~/', $str, $newStr);
for($i=0;$i<count($newStr[0]);$i++)
{
echo $newStr[0][$i].'<br>';
}
echo '<br><br><br>';
for($i=0;$i<count($newStr[1]);$i++)
{
echo $newStr[1][$i].'<br>';
}
Это выведет
^ Jony ~
^ Smith ~
^ пример свободной @ wpdevelop.com ~
Джони
Smith
пример свободной @ wpdevelop.com
Мне любопытно, была ли причина для двух записей массива из-за исходного синтаксиса строки или это нормальный ответ обработки функции. Извините, если этого не должно быть здесь, но мне действительно любопытно, как это работает.
спасибо,
Броди