использование preg_match для удаления указанного подчеркивания в php - PullRequest
0 голосов
/ 15 апреля 2010

В php всегда была путаница с preg_match. У меня есть такая строка:

apsd_01_03s_somedescription apsd_02_04_somedescription

Могу ли я использовать preg_match для удаления чего-либо с 3-го подчеркивания, включая 3-е подчеркивание.

спасибо.

Ответы [ 4 ]

2 голосов
/ 15 апреля 2010

Попробуйте это:

preg_replace('/^([^_]*_[^_]*_[^_]*).*/', '$1', $str)

Это займет только первые три последовательности, разделенные _. Таким образом, все, начиная с третьего _, будет удалено.

0 голосов
/ 15 апреля 2010

Если третье подчеркивание является последним, вы можете сделать это:

preg_replace('/^(.+)_.+?)$/', $1, $str);
0 голосов
/ 15 апреля 2010

Я согласен с ответом Gumbo, однако вместо регулярных выражений вы можете использовать функции массива PHP:

$s = "apsd_01_03s_somedescription";

$parts = explode("_", $s);
echo implode("_", array_slice($parts, 0, 3));
// apsd_01_03s

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

0 голосов
/ 15 апреля 2010

, если вы хотите удалить часть "_somedescription":

preg_replace('/([^<em>]*)</em>([^<em>]*)</em>([^<em>]*)</em>(.*)/', '$1_$2_$3', $str);
...