|
|
|
| как следущее делается?
Строка "gorod_kazan" должно заносится в переменные $par1=gorod; $par2=kazan;
даже если будет такое "gorod_kazan_2" в переменные $par1=gorod; $par2=kazan_2;
ну а если строка просто "gorod" то $par1=gorod; $par2=""; | |
|
|
|
|
|
|
|
для: legio2net
(24.02.2011 в 14:08)
| |
preg_match("/^([^_]+)-?(.*)$/", $text, $match);
print_r($match);
|
| |
|
|
|
|
|
|
|
для: legio2net
(24.02.2011 в 14:08)
| | Можно поступить следующим образом
<?php
$text = "gorod";
$pattern = "|^([^_]+)[_]*(.*?)$|is";
preg_match($pattern, $text, $out);
$par1 = $out[1];
$par2 = $out[2];
echo $par1."<br>";
echo $par2."<br>";
?>
|
| |
|
|
|
|
|
|
|
для: legio2net
(24.02.2011 в 14:08)
| | Тут нужно использовать элементарный explode("_",...) | |
|
|
|
|
|
|
|
для: Deed
(24.02.2011 в 15:44)
| | Не пойдет, по второму символу _ тоже пойдет разбиение, а в условии сказано, что эта часть должна отойти второму слову. | |
|
|
|
|
|
|
|
для: cheops
(24.02.2011 в 16:00)
| | у explode() есть limit-параметр, который ограничивает процесс разбиения. Если указать в нем 2 , то больше двух элементов создано не будет, и в последний войдет весь оставшийся хвост. Что в целом условиям задачи отвечает.
Правда, если разделителя _ нет вообще (как по последней части условия) , то второй элемент массива создан не будет.
А значит придется вводить для второй переменной отдельный код. Или хотя бы блокировку диагностики.
Как-то так:
<?
$pair = explode('_', $text, 2);
$par1 = $pair[0];
$par2 = @$pair[1];
|
или так:
<?
@list($par1,$par2) = explode('_', $text, 2);
|
| |
|
|
|